{"version":3,"sources":["components/Converter.tsx","generated/graphql.tsx","components/Diff.tsx","components/Result.tsx","components/Discounts.tsx","App.tsx","reportWebVitals.ts","index.tsx","components/Diff.module.css","App.module.css"],"names":["FileUploader","props","hiddenFileInput","React","useRef","Button","onClick","event","current","click","type","ref","onChange","filesUploaded","target","files","handleFiles","style","display","Converter","setFileData","fileData","Row","Col","Form","Group","CountryCode","CountryCodeAlpha3","defaultOptions","ConvertMutationDocument","gql","QueryGoogleCurrenciesDocument","ProductDiff","productResult","useState","showNotChanged","setShowNotChanged","collapsed","setCollapsed","managedByPricingTemplate","product","pricingTemplateID","Card","className","Header","e","preventDefault","stopPropagation","productId","undefined","md","variant","Body","Table","striped","bordered","hover","data","map","productDiff","ratioDiff","value","newPrice","oldPrice","klass","styles","red","green","percentDiff","roundedPercent","Math","round","key","shortName","alpha2","googleCurrency","code","discount","newPriceBeforeBeauty","fromApple","appleTier","applePrice","conversionFailed","conversionRate","usdPrice","filter","el","Diff","convert","convertedProductResults","Result","downloadFile","blob","Blob","csv","FileSaver","saveAs","Discounts","discounts","setDiscounts","baseOptions","options","Apollo","useQueryGoogleCurrenciesQuery","loading","error","chunkSize","floor","googleCurrencyList","length","chunks","chunk","chunkIdx","refs","Map","input","val","parseInt","isNaN","set","country","currentDiscount","get","InputGroup","Prepend","Text","id","currency","FormControl","placeholder","isValid","aria-label","aria-describedby","push","replacer","dataType","Array","from","entries","reviver","App","Date","reloadTime","setReloadTime","useConvertMutationMutation","convertMutationMutation","useCookies","cookies","setCookie","removeCookie","useAsyncEffect","isMounted","a","arrayBuffer","uploadedData","TextDecoder","decode","console","log","mutationDiscounts","forEach","toString","variables","useEffect","discountsJson","JSON","stringify","path","secure","sameSite","cookie","parsedDiscounts","parse","Container","Jumbotron","href","Footer","src","alt","width","height","getFullYear","disclaimer","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","client","ApolloClient","uri","cache","InMemoryCache","ReactGA","initialize","pageview","window","location","pathname","search","ReactDOM","render","StrictMode","CookiesProvider","ApolloProvider","document","getElementById","module","exports"],"mappings":"kQAOMA,EAAe,SAACC,GAElB,IAAMC,EAAkBC,IAAMC,OAAyB,MAcvD,OACI,qCACI,cAACC,EAAA,EAAD,CAAQC,QAZI,SAACC,GAA0D,IAAD,EAC1E,UAAAL,EAAgBM,eAAhB,SAAyBC,SAWrB,+CAGA,uBACIC,KAAK,OACLC,IAAKT,EACLU,SAZS,SAACL,GAClB,IAAMM,EAAgBN,EAAMO,OAAOC,MACnCd,EAAMe,YAAYH,IAWVI,MAAO,CAACC,QAAS,cAOlB,SAASC,EAAT,GAGoI,IAF7GC,EAE4G,EAF5GA,YAE4G,EAD5GC,SAIlC,OAAO,cAACC,EAAA,EAAD,UACH,cAACC,EAAA,EAAD,UACI,cAACC,EAAA,EAAD,UACI,cAACA,EAAA,EAAKC,MAAN,UACI,cAAC,EAAD,CAAcT,YAAa,SAACD,GACxBK,EAAYL,c,UCuBxBW,EA+PAC,E,4DAlUNC,G,OAAkB,K,SAmEZF,K,YAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,QAAAA,E,SAAAA,M,cA+PAC,K,YAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,UAAAA,E,U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","file":"static/js/main.a9b0cf19.chunk.js","sourcesContent":["import React, {ChangeEvent, MouseEventHandler, useState} from \"react\";\nimport useAsyncEffect from \"use-async-effect\";\nimport {Button, Col, Form, Row} from \"react-bootstrap\";\nimport {useConvertMutationMutation} from \"../generated/graphql\";\nimport Result from \"./Result\";\nimport styles from \"./Converter.module.css\"\n\nconst FileUploader = (props: { handleFiles: (files: FileList) => void }) => {\n // Create a reference to the hidden file input element\n const hiddenFileInput = React.useRef(null);\n\n // Programatically click the hidden file input element\n // when the Button component is clicked\n const handleClick = (event: React.MouseEvent) => {\n hiddenFileInput.current?.click();\n };\n\n // Call a function (passed as a prop from the parent component)\n // to handle the user-selected file\n const handleChange = (event: ChangeEvent) => {\n const filesUploaded = event.target.files!;\n props.handleFiles(filesUploaded);\n };\n return (\n <>\n \n \n \n );\n}\n\n\nexport default function Converter({\n setFileData,\n fileData\n }: { setFileData: React.Dispatch>, fileData: FileList | undefined }) {\n\n\n return \n \n
\n \n {\n setFileData(files)\n }}/>\n \n
\n \n
\n}","import { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nexport type Maybe = T | null;\nexport type Exact = { [K in keyof T]: T[K] };\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\nconst defaultOptions = {}\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n /** The built-in `Decimal` scalar type. */\n Decimal: any;\n /** The `Long` scalar type represents non-fractional signed whole 64-bit numeric values. Long can represent values between -(2^63) and 2^63 - 1. */\n Long: any;\n};\n\n\n\nexport type ApplePricePoint = {\n __typename?: 'ApplePricePoint';\n currency: Scalars['String'];\n customerPrice: Scalars['String'];\n priceTier: Scalars['String'];\n proceeds: Scalars['String'];\n territory: Scalars['String'];\n};\n\nexport type ConvertDataResult = {\n __typename?: 'ConvertDataResult';\n csv: Scalars['String'];\n convertedProductResults: Array;\n};\n\nexport type ConvertParamsInput = {\n csv: Scalars['String'];\n discounts?: Maybe>;\n};\n\nexport type ConvertedProductResult = {\n __typename?: 'ConvertedProductResult';\n usdPrice: Scalars['Decimal'];\n product: GoogleProduct;\n data: Array;\n};\n\nexport type ConvertedProductResultData = {\n __typename?: 'ConvertedProductResultData';\n oldPrice: Scalars['Decimal'];\n newPrice: Scalars['Decimal'];\n newPriceBeforeBeauty: Scalars['Decimal'];\n fromApple: Scalars['Boolean'];\n appleTier: Scalars['Int'];\n applePrice: Scalars['Decimal'];\n conversionRate: Scalars['Decimal'];\n conversionFailed: Scalars['Boolean'];\n discount: Scalars['Decimal'];\n googleCurrency: Currency;\n};\n\nexport type Country = {\n __typename?: 'Country';\n shortName?: Maybe;\n fullName?: Maybe;\n activeDirectoryName?: Maybe;\n alpha2: CountryCode;\n alpha3: CountryCodeAlpha3;\n numeric?: Maybe;\n};\n\nexport enum CountryCode {\n None = 'NONE',\n Aw = 'AW',\n Af = 'AF',\n Ao = 'AO',\n Ai = 'AI',\n Ax = 'AX',\n Al = 'AL',\n Ad = 'AD',\n Ae = 'AE',\n Ar = 'AR',\n Am = 'AM',\n As = 'AS',\n Aq = 'AQ',\n Tf = 'TF',\n Ag = 'AG',\n Au = 'AU',\n At = 'AT',\n Az = 'AZ',\n Bi = 'BI',\n Be = 'BE',\n Bj = 'BJ',\n Bf = 'BF',\n Bd = 'BD',\n Bg = 'BG',\n Bh = 'BH',\n Bs = 'BS',\n Ba = 'BA',\n Bl = 'BL',\n By = 'BY',\n Bz = 'BZ',\n Bm = 'BM',\n Bo = 'BO',\n Br = 'BR',\n Bb = 'BB',\n Bn = 'BN',\n Bt = 'BT',\n Bv = 'BV',\n Bw = 'BW',\n Cf = 'CF',\n Ca = 'CA',\n Cc = 'CC',\n Ch = 'CH',\n Cl = 'CL',\n Cn = 'CN',\n Ci = 'CI',\n Cm = 'CM',\n Cd = 'CD',\n Cg = 'CG',\n Ck = 'CK',\n Co = 'CO',\n Km = 'KM',\n Cv = 'CV',\n Cr = 'CR',\n Cu = 'CU',\n Cw = 'CW',\n Cx = 'CX',\n Ky = 'KY',\n Cy = 'CY',\n Cz = 'CZ',\n De = 'DE',\n Dj = 'DJ',\n Dm = 'DM',\n Dk = 'DK',\n Do = 'DO',\n Dz = 'DZ',\n Ec = 'EC',\n Eg = 'EG',\n Er = 'ER',\n Eh = 'EH',\n Es = 'ES',\n Ee = 'EE',\n Et = 'ET',\n Fi = 'FI',\n Fj = 'FJ',\n Fk = 'FK',\n Fr = 'FR',\n Fo = 'FO',\n Fm = 'FM',\n Ga = 'GA',\n Gb = 'GB',\n Ge = 'GE',\n Gg = 'GG',\n Gh = 'GH',\n Gi = 'GI',\n Gn = 'GN',\n Gp = 'GP',\n Gm = 'GM',\n Gw = 'GW',\n Gq = 'GQ',\n Gr = 'GR',\n Gd = 'GD',\n Gl = 'GL',\n Gt = 'GT',\n Gf = 'GF',\n Gu = 'GU',\n Gy = 'GY',\n Hk = 'HK',\n Hm = 'HM',\n Hn = 'HN',\n Hr = 'HR',\n Ht = 'HT',\n Hu = 'HU',\n Id = 'ID',\n Im = 'IM',\n In = 'IN',\n Io = 'IO',\n Ie = 'IE',\n Ir = 'IR',\n Iq = 'IQ',\n Is = 'IS',\n Il = 'IL',\n It = 'IT',\n Jm = 'JM',\n Je = 'JE',\n Jo = 'JO',\n Jp = 'JP',\n Kz = 'KZ',\n Ke = 'KE',\n Kg = 'KG',\n Kh = 'KH',\n Ki = 'KI',\n Kn = 'KN',\n Kr = 'KR',\n Xk = 'XK',\n Kw = 'KW',\n La = 'LA',\n Lb = 'LB',\n Lr = 'LR',\n Ly = 'LY',\n Lc = 'LC',\n Li = 'LI',\n Lk = 'LK',\n Ls = 'LS',\n Lt = 'LT',\n Lu = 'LU',\n Lv = 'LV',\n Mo = 'MO',\n Mf = 'MF',\n Ma = 'MA',\n Mc = 'MC',\n Md = 'MD',\n Mg = 'MG',\n Mv = 'MV',\n Mx = 'MX',\n Mh = 'MH',\n Mk = 'MK',\n Ml = 'ML',\n Mt = 'MT',\n Mm = 'MM',\n Me = 'ME',\n Mn = 'MN',\n Mp = 'MP',\n Mz = 'MZ',\n Mr = 'MR',\n Ms = 'MS',\n Mq = 'MQ',\n Mu = 'MU',\n Mw = 'MW',\n My = 'MY',\n Yt = 'YT',\n Na = 'NA',\n Nc = 'NC',\n Ne = 'NE',\n Nf = 'NF',\n Ng = 'NG',\n Ni = 'NI',\n Nu = 'NU',\n Nl = 'NL',\n No = 'NO',\n Np = 'NP',\n Nr = 'NR',\n Nz = 'NZ',\n Om = 'OM',\n Pk = 'PK',\n Pa = 'PA',\n Pn = 'PN',\n Pe = 'PE',\n Ph = 'PH',\n Pw = 'PW',\n Pg = 'PG',\n Pl = 'PL',\n Pr = 'PR',\n Kp = 'KP',\n Pt = 'PT',\n Py = 'PY',\n Ps = 'PS',\n Pf = 'PF',\n Qa = 'QA',\n Re = 'RE',\n Ro = 'RO',\n Ru = 'RU',\n Rw = 'RW',\n Sa = 'SA',\n Sd = 'SD',\n Sn = 'SN',\n Sg = 'SG',\n Gs = 'GS',\n Sj = 'SJ',\n Sb = 'SB',\n Sl = 'SL',\n Sv = 'SV',\n Sm = 'SM',\n So = 'SO',\n Pm = 'PM',\n Rs = 'RS',\n Ss = 'SS',\n St = 'ST',\n Sr = 'SR',\n Sk = 'SK',\n Si = 'SI',\n Se = 'SE',\n Sz = 'SZ',\n Sx = 'SX',\n Sc = 'SC',\n Sy = 'SY',\n Tc = 'TC',\n Td = 'TD',\n Tg = 'TG',\n Th = 'TH',\n Tj = 'TJ',\n Tk = 'TK',\n Tm = 'TM',\n Tl = 'TL',\n To = 'TO',\n Tt = 'TT',\n Tn = 'TN',\n Tr = 'TR',\n Tv = 'TV',\n Tw = 'TW',\n Tz = 'TZ',\n Ug = 'UG',\n Ua = 'UA',\n Um = 'UM',\n Uy = 'UY',\n Us = 'US',\n Uz = 'UZ',\n Va = 'VA',\n Vc = 'VC',\n Ve = 'VE',\n Vg = 'VG',\n Vi = 'VI',\n Vn = 'VN',\n Vu = 'VU',\n Wf = 'WF',\n Ws = 'WS',\n Ye = 'YE',\n Za = 'ZA',\n Zm = 'ZM',\n Zw = 'ZW',\n Bq = 'BQ',\n Sh = 'SH',\n Cs = 'CS'\n}\n\nexport enum CountryCodeAlpha3 {\n None = 'NONE',\n Abw = 'ABW',\n Afg = 'AFG',\n Ago = 'AGO',\n Aia = 'AIA',\n Ala = 'ALA',\n Alb = 'ALB',\n And = 'AND',\n Are = 'ARE',\n Arg = 'ARG',\n Arm = 'ARM',\n Asm = 'ASM',\n Ata = 'ATA',\n Atf = 'ATF',\n Atg = 'ATG',\n Aus = 'AUS',\n Aut = 'AUT',\n Aze = 'AZE',\n Bdi = 'BDI',\n Bel = 'BEL',\n Ben = 'BEN',\n Bfa = 'BFA',\n Bgd = 'BGD',\n Bgr = 'BGR',\n Bhr = 'BHR',\n Bhs = 'BHS',\n Bih = 'BIH',\n Blm = 'BLM',\n Blr = 'BLR',\n Blz = 'BLZ',\n Bmu = 'BMU',\n Bol = 'BOL',\n Bra = 'BRA',\n Brb = 'BRB',\n Brn = 'BRN',\n Btn = 'BTN',\n Bvt = 'BVT',\n Bwa = 'BWA',\n Caf = 'CAF',\n Can = 'CAN',\n Cck = 'CCK',\n Che = 'CHE',\n Chl = 'CHL',\n Chn = 'CHN',\n Civ = 'CIV',\n Cmr = 'CMR',\n Cod = 'COD',\n Cog = 'COG',\n Cok = 'COK',\n Col = 'COL',\n Com = 'COM',\n Cpv = 'CPV',\n Cri = 'CRI',\n Cub = 'CUB',\n Cuw = 'CUW',\n Cxr = 'CXR',\n Cym = 'CYM',\n Cyp = 'CYP',\n Cze = 'CZE',\n Deu = 'DEU',\n Dji = 'DJI',\n Dma = 'DMA',\n Dnk = 'DNK',\n Dom = 'DOM',\n Dza = 'DZA',\n Ecu = 'ECU',\n Egy = 'EGY',\n Eri = 'ERI',\n Esh = 'ESH',\n Esp = 'ESP',\n Est = 'EST',\n Eth = 'ETH',\n Fin = 'FIN',\n Fji = 'FJI',\n Flk = 'FLK',\n Fra = 'FRA',\n Fro = 'FRO',\n Fsm = 'FSM',\n Gab = 'GAB',\n Gbr = 'GBR',\n Geo = 'GEO',\n Ggy = 'GGY',\n Gha = 'GHA',\n Gib = 'GIB',\n Gin = 'GIN',\n Glp = 'GLP',\n Gmb = 'GMB',\n Gnb = 'GNB',\n Gnq = 'GNQ',\n Grc = 'GRC',\n Grd = 'GRD',\n Grl = 'GRL',\n Gtm = 'GTM',\n Guf = 'GUF',\n Gum = 'GUM',\n Guy = 'GUY',\n Hkg = 'HKG',\n Hmd = 'HMD',\n Hnd = 'HND',\n Hrv = 'HRV',\n Hti = 'HTI',\n Hun = 'HUN',\n Idn = 'IDN',\n Imn = 'IMN',\n Ind = 'IND',\n Iot = 'IOT',\n Irl = 'IRL',\n Irn = 'IRN',\n Irq = 'IRQ',\n Isl = 'ISL',\n Isr = 'ISR',\n Ita = 'ITA',\n Jam = 'JAM',\n Jey = 'JEY',\n Jor = 'JOR',\n Jpn = 'JPN',\n Kaz = 'KAZ',\n Ken = 'KEN',\n Kgz = 'KGZ',\n Khm = 'KHM',\n Kir = 'KIR',\n Kna = 'KNA',\n Kor = 'KOR',\n Kos = 'KOS',\n Kwt = 'KWT',\n Lao = 'LAO',\n Lbn = 'LBN',\n Lbr = 'LBR',\n Lby = 'LBY',\n Lca = 'LCA',\n Lie = 'LIE',\n Lka = 'LKA',\n Lso = 'LSO',\n Ltu = 'LTU',\n Lux = 'LUX',\n Lva = 'LVA',\n Mac = 'MAC',\n Maf = 'MAF',\n Mar = 'MAR',\n Mco = 'MCO',\n Mda = 'MDA',\n Mdg = 'MDG',\n Mdv = 'MDV',\n Mex = 'MEX',\n Mhl = 'MHL',\n Mkd = 'MKD',\n Mli = 'MLI',\n Mlt = 'MLT',\n Mmr = 'MMR',\n Mne = 'MNE',\n Mng = 'MNG',\n Mnp = 'MNP',\n Moz = 'MOZ',\n Mrt = 'MRT',\n Msr = 'MSR',\n Mtq = 'MTQ',\n Mus = 'MUS',\n Mwi = 'MWI',\n Mys = 'MYS',\n Myt = 'MYT',\n Nam = 'NAM',\n Ncl = 'NCL',\n Ner = 'NER',\n Nfk = 'NFK',\n Nga = 'NGA',\n Nic = 'NIC',\n Niu = 'NIU',\n Nld = 'NLD',\n Nor = 'NOR',\n Npl = 'NPL',\n Nru = 'NRU',\n Nzl = 'NZL',\n Omn = 'OMN',\n Pak = 'PAK',\n Pan = 'PAN',\n Pcn = 'PCN',\n Per = 'PER',\n Phl = 'PHL',\n Plw = 'PLW',\n Png = 'PNG',\n Pol = 'POL',\n Pri = 'PRI',\n Prk = 'PRK',\n Prt = 'PRT',\n Pry = 'PRY',\n Pse = 'PSE',\n Pyf = 'PYF',\n Qat = 'QAT',\n Reu = 'REU',\n Rou = 'ROU',\n Rus = 'RUS',\n Rwa = 'RWA',\n Sau = 'SAU',\n Sdn = 'SDN',\n Sen = 'SEN',\n Sgp = 'SGP',\n Sgs = 'SGS',\n Sjm = 'SJM',\n Slb = 'SLB',\n Sle = 'SLE',\n Slv = 'SLV',\n Smr = 'SMR',\n Som = 'SOM',\n Spm = 'SPM',\n Srb = 'SRB',\n Ssd = 'SSD',\n Stp = 'STP',\n Sur = 'SUR',\n Svk = 'SVK',\n Svn = 'SVN',\n Swe = 'SWE',\n Swz = 'SWZ',\n Sxm = 'SXM',\n Syc = 'SYC',\n Syr = 'SYR',\n Tca = 'TCA',\n Tcd = 'TCD',\n Tgo = 'TGO',\n Tha = 'THA',\n Tjk = 'TJK',\n Tkl = 'TKL',\n Tkm = 'TKM',\n Tls = 'TLS',\n Ton = 'TON',\n Tto = 'TTO',\n Tun = 'TUN',\n Tur = 'TUR',\n Tuv = 'TUV',\n Twn = 'TWN',\n Tza = 'TZA',\n Uga = 'UGA',\n Ukr = 'UKR',\n Umi = 'UMI',\n Ury = 'URY',\n Usa = 'USA',\n Uzb = 'UZB',\n Vat = 'VAT',\n Vct = 'VCT',\n Ven = 'VEN',\n Vgb = 'VGB',\n Vir = 'VIR',\n Vnm = 'VNM',\n Vut = 'VUT',\n Wlf = 'WLF',\n Wsm = 'WSM',\n Yem = 'YEM',\n Zaf = 'ZAF',\n Zmb = 'ZMB',\n Zwe = 'ZWE',\n Bes = 'BES',\n Shn = 'SHN',\n Scg = 'SCG'\n}\n\nexport type Currency = {\n __typename?: 'Currency';\n code?: Maybe;\n namespace?: Maybe;\n number?: Maybe;\n symbol?: Maybe;\n decimalDigits: Scalars['Float'];\n englishName?: Maybe;\n majorUnit: Scalars['Decimal'];\n minorUnit: Scalars['Decimal'];\n};\n\n\nexport type GoogleCurrencyData = {\n __typename?: 'GoogleCurrencyData';\n currency: Currency;\n country: Country;\n currencyName: Scalars['String'];\n rangeMin: Scalars['Decimal'];\n rangeMax: Scalars['Decimal'];\n};\n\nexport type GoogleProduct = {\n __typename?: 'GoogleProduct';\n productId: Scalars['String'];\n publishedState: Scalars['String'];\n purchaseType: Scalars['String'];\n autoTranslate: Scalars['Boolean'];\n localeTitleDescription: Scalars['String'];\n autoFillPrices: Scalars['Boolean'];\n price: Scalars['String'];\n prices: Array;\n pricingTemplateID: Scalars['String'];\n};\n\nexport type KeyValuePairOfCountryAndConvertedProductResultData = {\n __typename?: 'KeyValuePairOfCountryAndConvertedProductResultData';\n key: Country;\n value: ConvertedProductResultData;\n};\n\nexport type KeyValuePairOfStringAndDecimalInput = {\n key: Scalars['String'];\n value: Scalars['Decimal'];\n};\n\nexport type KeyValuePairOfStringAndPriceData = {\n __typename?: 'KeyValuePairOfStringAndPriceData';\n key: Scalars['String'];\n value: PriceData;\n};\n\n\nexport type Mutation = {\n __typename?: 'Mutation';\n convert: ConvertDataResult;\n};\n\n\nexport type MutationConvertArgs = {\n input: ConvertParamsInput;\n};\n\nexport type PriceData = {\n __typename?: 'PriceData';\n priceFromCsv: Scalars['String'];\n priceInMilliUnits: Scalars['Long'];\n priceWhole: Scalars['Decimal'];\n};\n\nexport type Query = {\n __typename?: 'Query';\n appstorePrices: Array;\n googleCurrencyList: Array;\n};\n\nexport type ConvertMutationMutationVariables = Exact<{\n input: ConvertParamsInput;\n}>;\n\n\nexport type ConvertMutationMutation = (\n { __typename?: 'Mutation' }\n & { convert: (\n { __typename?: 'ConvertDataResult' }\n & Pick\n & { convertedProductResults: Array<(\n { __typename?: 'ConvertedProductResult' }\n & Pick\n & { product: (\n { __typename?: 'GoogleProduct' }\n & Pick\n & { prices: Array<(\n { __typename?: 'KeyValuePairOfStringAndPriceData' }\n & Pick\n & { value: (\n { __typename?: 'PriceData' }\n & Pick\n ) }\n )> }\n ), data: Array<(\n { __typename?: 'KeyValuePairOfCountryAndConvertedProductResultData' }\n & { key: (\n { __typename?: 'Country' }\n & Pick\n ), value: (\n { __typename?: 'ConvertedProductResultData' }\n & Pick\n & { googleCurrency: (\n { __typename?: 'Currency' }\n & Pick\n ) }\n ) }\n )> }\n )> }\n ) }\n);\n\nexport type QueryApplePricesQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type QueryApplePricesQuery = (\n { __typename?: 'Query' }\n & { appstorePrices: Array<(\n { __typename?: 'ApplePricePoint' }\n & Pick\n )> }\n);\n\nexport type QueryGoogleCurrenciesQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type QueryGoogleCurrenciesQuery = (\n { __typename?: 'Query' }\n & { googleCurrencyList: Array<(\n { __typename?: 'GoogleCurrencyData' }\n & Pick\n & { country: (\n { __typename?: 'Country' }\n & Pick\n ), currency: (\n { __typename?: 'Currency' }\n & Pick\n ) }\n )> }\n);\n\n\nexport const ConvertMutationDocument = gql`\n mutation ConvertMutation($input: ConvertParamsInput!) {\n convert(input: $input) {\n csv\n convertedProductResults {\n product {\n autoFillPrices\n autoTranslate\n localeTitleDescription\n price\n prices {\n key\n value {\n priceFromCsv\n priceInMilliUnits\n priceWhole\n }\n }\n pricingTemplateID\n productId\n publishedState\n purchaseType\n }\n data {\n key {\n activeDirectoryName\n alpha2\n alpha3\n fullName\n numeric\n shortName\n }\n value {\n applePrice\n appleTier\n conversionFailed\n conversionRate\n discount\n fromApple\n newPrice\n newPriceBeforeBeauty\n oldPrice\n googleCurrency {\n code\n decimalDigits\n englishName\n majorUnit\n minorUnit\n namespace\n number\n symbol\n }\n }\n }\n usdPrice\n }\n }\n}\n `;\nexport type ConvertMutationMutationFn = Apollo.MutationFunction;\n\n/**\n * __useConvertMutationMutation__\n *\n * To run a mutation, you first call `useConvertMutationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useConvertMutationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [convertMutationMutation, { data, loading, error }] = useConvertMutationMutation({\n * variables: {\n * input: // value for 'input'\n * },\n * });\n */\nexport function useConvertMutationMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(ConvertMutationDocument, options);\n }\nexport type ConvertMutationMutationHookResult = ReturnType;\nexport type ConvertMutationMutationResult = Apollo.MutationResult;\nexport type ConvertMutationMutationOptions = Apollo.BaseMutationOptions;\nexport const QueryApplePricesDocument = gql`\n query QueryApplePrices {\n appstorePrices {\n currency\n customerPrice\n priceTier\n proceeds\n territory\n }\n}\n `;\n\n/**\n * __useQueryApplePricesQuery__\n *\n * To run a query within a React component, call `useQueryApplePricesQuery` and pass it any options that fit your needs.\n * When your component renders, `useQueryApplePricesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useQueryApplePricesQuery({\n * variables: {\n * },\n * });\n */\nexport function useQueryApplePricesQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(QueryApplePricesDocument, options);\n }\nexport function useQueryApplePricesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(QueryApplePricesDocument, options);\n }\nexport type QueryApplePricesQueryHookResult = ReturnType;\nexport type QueryApplePricesLazyQueryHookResult = ReturnType;\nexport type QueryApplePricesQueryResult = Apollo.QueryResult;\nexport const QueryGoogleCurrenciesDocument = gql`\n query QueryGoogleCurrencies {\n googleCurrencyList {\n country {\n alpha2\n fullName\n shortName\n }\n currency {\n code\n decimalDigits\n }\n currencyName\n }\n}\n `;\n\n/**\n * __useQueryGoogleCurrenciesQuery__\n *\n * To run a query within a React component, call `useQueryGoogleCurrenciesQuery` and pass it any options that fit your needs.\n * When your component renders, `useQueryGoogleCurrenciesQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useQueryGoogleCurrenciesQuery({\n * variables: {\n * },\n * });\n */\nexport function useQueryGoogleCurrenciesQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(QueryGoogleCurrenciesDocument, options);\n }\nexport function useQueryGoogleCurrenciesLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(QueryGoogleCurrenciesDocument, options);\n }\nexport type QueryGoogleCurrenciesQueryHookResult = ReturnType;\nexport type QueryGoogleCurrenciesLazyQueryHookResult = ReturnType;\nexport type QueryGoogleCurrenciesQueryResult = Apollo.QueryResult;\n\n export interface PossibleTypesResultData {\n possibleTypes: {\n [key: string]: string[]\n }\n }\n const result: PossibleTypesResultData = {\n \"possibleTypes\": {}\n};\n export default result;\n ","import {Alert, Button, Card, Col, Row, Table} from \"react-bootstrap\";\nimport React, {useState} from \"react\";\nimport {ConvertMutationMutation} from \"../generated/graphql\";\nimport styles from \"./Diff.module.css\"\nimport {symlink} from \"fs\";\n\n\nfunction ProductDiff({productResult}: { productResult: ConvertMutationMutation[\"convert\"][\"convertedProductResults\"][0] }) {\n const [showNotChanged, setShowNotChanged] = useState();\n const [collapsed, setCollapsed] = useState();\n\n const managedByPricingTemplate = productResult.product.pricingTemplateID != null && productResult.product.pricingTemplateID != \"\";\n\n return \n \n {\n e.preventDefault();\n e.stopPropagation();\n setCollapsed(!collapsed)\n return false;\n }}>\n \n \n

{productResult.product.productId}

\n {managedByPricingTemplate ? `Managed by pricing template ${productResult.product.pricingTemplateID}` : undefined}\n \n \n \n \n \n {collapsed ? \"▲\" : \"▼\"}\n \n
\n
\n
\n {!managedByPricingTemplate && !collapsed &&\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {productResult.data.map(productDiff => {\n\n // const pricesDiffer = productDiff.value.oldPrice != productDiff.value.newPrice;\n const ratioDiff = (productDiff.value.newPrice / productDiff.value.oldPrice) - 1;\n const klass = ratioDiff == 0 ? undefined : ratioDiff < 0 ? styles.red : styles.green;\n const percentDiff = ratioDiff * 100;\n // Round to 2 decimals\n const roundedPercent = Math.round(percentDiff * 100) / 100;\n if (ratioDiff == 0 && !showNotChanged) {\n return undefined;\n }\n\n return \n \n \n \n \n \n \n {productDiff.value.fromApple ? : }\n \n \n \n }).filter(el => el != null)}\n \n
CurrencyOld PriceNew PriceNew price percent differenceDiscountNew Price Before BeautyFrom AppleConversion RateUSD price
\n {productDiff.key.shortName}\n

{productDiff.key.alpha2} | {productDiff.value.googleCurrency.code}

\n
{productDiff.value.oldPrice}{productDiff.value.newPrice}{roundedPercent}%{productDiff.value.discount}{productDiff.value.newPriceBeforeBeauty}Tier: {productDiff.value.appleTier} /\n Price: {productDiff.value.applePrice}False{productDiff.value.conversionFailed ? \"Failed\" : productDiff.value.conversionRate}{productResult.usdPrice}
\n
\n }\n
\n\n}\n\n\nexport default function Diff(props: { data: ConvertMutationMutation }) {\n\n\n return <>\n {props.data.convert!.convertedProductResults.map(productResult => {\n return
\n \n
\n })}\n \n}","import FileSaver from \"file-saver\";\nimport {Button, Col, Row} from \"react-bootstrap\";\nimport React from \"react\";\nimport {ConvertMutationMutation} from \"../generated/graphql\";\nimport Diff from \"./Diff\";\n\nexport default function Result(props:\n {\n data: ConvertMutationMutation\n }\n) {\n const downloadFile = () => {\n const blob = new Blob([props.data.convert!.csv], {type: \"text/plain;charset=utf-8\"});\n FileSaver.saveAs(blob, \"converted-in-app-products.csv\");\n }\n\n return \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n}","import React, {useState} from \"react\";\nimport {Country, CountryCode, useQueryGoogleCurrenciesQuery} from \"../generated/graphql\";\nimport {Col, FormControl, InputGroup, Row} from \"react-bootstrap\";\nimport chunk from \"lodash/chunk\";\nimport {ChangeEvent} from \"react\";\nimport styles from \"./Diff.module.css\"\nimport {useCookies} from \"react-cookie\";\n\n\nexport default function Discounts({\n discounts,\n setDiscounts\n }: { discounts: Map | undefined, setDiscounts: React.Dispatch | undefined>> }) {\n const {loading, error, data} = useQueryGoogleCurrenciesQuery();\n\n\n\n if (!data) {\n return \n \n {loading &&

Loading

}\n {error &&

Error!

}\n \n
\n }\n\n const chunkSize = Math.floor(data.googleCurrencyList.length / 5);\n const chunks = chunk(data.googleCurrencyList, chunkSize);\n\n let chunkIdx = 0;\n const refs: { country: CountryCode, input: HTMLInputElement }[] = [];\n\n function onChange(e: ChangeEvent) {\n const discounts = new Map();\n for (const ref of refs) {\n let value = ref.input.value;\n if (value == null || value == \"\") continue;\n const val = parseInt(value);\n if (!isNaN(val)) {\n discounts.set(ref.country, val);\n }\n }\n setDiscounts(discounts);\n }\n\n return \n {chunks.map(chunk => {\n return \n {chunk.map(el => {\n const currentDiscount = discounts?.get(el.country.alpha2);\n return
\n {el.country.shortName}\n \n \n \n {el.country.alpha2} | {el.currency.code}\n \n \n {\n refs.push({country: el.country.alpha2, input: ref})\n }}\n />\n \n
\n })}\n \n })}\n
\n }","import React, {useEffect, useState} from 'react';\nimport {Button, Card, Col, Container, Jumbotron, Row} from \"react-bootstrap\";\nimport Converter from \"./components/Converter\";\nimport styles from \"./App.module.css\"\nimport {CountryCode, KeyValuePairOfStringAndDecimalInput, useConvertMutationMutation} from \"./generated/graphql\";\nimport useAsyncEffect from \"use-async-effect\";\nimport Result from \"./components/Result\";\nimport Discounts from \"./components/Discounts\";\nimport {useCookies} from \"react-cookie\";\nimport isEmpty from \"lodash/isEmpty\"\n\nfunction replacer(key: string, value: any) {\n if(value instanceof Map) {\n return {\n dataType: 'Map',\n value: Array.from(value.entries()), // or with spread: value: [...value]\n };\n } else {\n return value;\n }\n}\n\n\nfunction reviver(key: string, value:any) {\n if(typeof value === 'object' && value !== null) {\n if (value.dataType === 'Map') {\n return new Map(value.value);\n }\n }\n return value;\n}\n\nfunction App() {\n const [fileData, setFileData] = useState();\n const [discounts, setDiscounts] = useState>();\n const [reloadTime, setReloadTime] = useState(new Date());\n\n const [convertMutationMutation, {data, loading, error}] = useConvertMutationMutation();\n const [cookies, setCookie, removeCookie] = useCookies([]);\n\n\n useAsyncEffect(async isMounted => {\n if (fileData == null) return;\n\n const data = await fileData![0].arrayBuffer();\n if (!isMounted()) return;\n const uploadedData = new TextDecoder().decode(data);\n console.log(\"Waiting for mutation\");\n let mutationDiscounts: Array = [];\n\n if (discounts != null) {\n discounts.forEach((value, key, map) => {\n mutationDiscounts.push({\n key: key.toString(),\n value: value / 100\n })\n })\n }\n\n await convertMutationMutation({\n variables: {\n input: {\n csv: uploadedData,\n discounts: mutationDiscounts\n }\n },\n });\n console.log(\"Mutation done\");\n\n }, [fileData, reloadTime])\n\n useEffect(() => {\n if (discounts != null) {\n let discountsJson = JSON.stringify(discounts, replacer);\n console.log(\"Saving discounts\", discountsJson)\n setCookie('discounts', discountsJson, {path: '/', secure: true, sameSite: \"strict\"});\n } else {\n removeCookie('discounts')\n }\n }, [discounts]);\n\n useEffect(() => {\n try {\n // useCookie всегда парсит джейсон :facepalm:\n let cookie = JSON.stringify(cookies['discounts']);\n if (discounts == null && cookie != null) {\n console.log(cookie);\n let parsedDiscounts = JSON.parse(cookie, reviver);\n console.log(parsedDiscounts);\n setDiscounts(parsedDiscounts);\n }\n }catch (e) {\n console.error(\"Error parsing discounts\");\n console.error(e);\n removeCookie('discounts')\n }\n }, [])\n\n\n return \n \n \n \n \n \n \n \n \n \n

Convert your Google prices csv to Apple price tiers

\n

\n Upload your Google Play in-app products export csv, and you will get a csv with prices\n converted to Apple's price points, and a diff of what\n changed.\n

\n
\n

How it works:

\n

On the input side Price Converter have Apple's fixed price\n points for in-app products and export\n of your Google Play in-app products

\n

For each product Price Converter will try to find the closest apple price tier for USD\n price of your Google Play in-app product

\n

It will then set prices for every\n country Google Play supports to one of:

\n
    \n
  • Apple price point price — if Apple support this country
  • \n
  • Converted price from USD to the country's currency (using currency conversion)\n (Google Play supports more countries than Apple)\n
  • \n
\n

It will then apply any discounts you set and beautify the price (to be .59/.99 and so\n on)

\n
\n \n \n \n \n
\n
\n \n
\n \n \n {!loading &&\n }\n \n \n \n \n \n \n \n \n \n \n Discounts\n
\n discounts will persists between reloads\n \n \n \n \n
\n \n \n {data ? : \"First upload csv. You will be able to reload prices after change.\"}\n\n \n
\n
\n \n {data &&\n }\n
\n \n
\n \n \n {loading &&

Loading

}\n {error &&

Error

}\n {data && }\n \n
\n
\n \n \n \"\"\n © Michael Varamashvili @ Fx\n Games {new Date().getFullYear()}\n \n \n

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR\n A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n IN THE SOFTWARE.

\n \n
\n
\n
\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport ReactGA from 'react-ga';\n\nimport {\n ApolloClient,\n InMemoryCache,\n ApolloProvider,\n useQuery,\n gql\n} from \"@apollo/client\";\n\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport {CookiesProvider} from \"react-cookie\";\n\n\nconst url = \"/graphql\";\n\nconst client = new ApolloClient({\n uri: url,\n cache: new InMemoryCache()\n});\n\n\nReactGA.initialize('G-07LGXT2V30');\nReactGA.pageview(window.location.pathname + window.location.search);\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"green\":\"Diff_green__1U1c5\",\"red\":\"Diff_red__2Kl1_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"disclaimer\":\"App_disclaimer__3IckW\"};"],"sourceRoot":""}