diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-03-15 00:26:13 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-03-15 00:26:13 +0900 |
| commit | c830af9e843f5350d1f88bbeeda9aa7db859b75a (patch) | |
| tree | 1c473964c451ff430c0d3d27681a8c1bed4050cc /Q5.php | |
| parent | d2193fdd6505fdb4b272359d9a82cdbe34c55dd5 (diff) | |
| download | PHPerKaigi2023-tokens-c830af9e843f5350d1f88bbeeda9aa7db859b75a.tar.gz PHPerKaigi2023-tokens-c830af9e843f5350d1f88bbeeda9aa7db859b75a.tar.zst PHPerKaigi2023-tokens-c830af9e843f5350d1f88bbeeda9aa7db859b75a.zip | |
Diffstat (limited to 'Q5.php')
| -rw-r--r-- | Q5.php | 610 |
1 files changed, 610 insertions, 0 deletions
@@ -0,0 +1,610 @@ +<?php + +declare(strict_types=1); + +if (php_sapi_name() !== 'cli-server') { + fwrite(STDERR, <<<EOS + Usage: + php -S localhost:8000 $argv[0] + + Recommended options: + -d opcache.enable_cli=on + -d opcache.jit=on + -d opcache.jit_buffer_size=100M + -d max_execution_time=300 + + EOS); + exit(1); +} + +if (!str_ends_with($_SERVER['REQUEST_URI'], '.png')) { + echo base64_decode( + 'PGhlYWQ+PHRpdGxlPkknbSBhIHRlYXBvdDwvdGl0bGU+PC9oZWFkPjxwPjxpbWcgc3JjPS90ZWFwb3Q' + . 'ucG5nIHdpZHRoPTQxOCBoZWlnaHQ9NDE4PjwvcD48c2NyaXB0PmNvbnNvbGUubG9nKGF0b2IoJw==') + . 'bm8gdG9rZW4gaGVyZSA7LSk=' + . base64_decode('JykpPC9zY3JpcHQ+'); + return; +} + +// For slow machine, enable fast mode. +const FAST_MODE = true; + +const w = FAST_MODE ? 104 : 209; +const h = FAST_MODE ? 104 : 209; +const rM = [[0.866,0.5,0,0],[-0.5,0.866,0,0],[0,0,1,0],[0,0,0,0]]; +const pM = [[1,0,0,0],[0,1,0,0],[0,0,-0.818,1.818],[0,0,-1,0]]; + +[$vs, $ns, $ps] = T(); + +$q = 0; $cP = [-5,0,0,0]; $cU = [0,1,0,0]; $L = [-0.41,0.82,-0.41,0]; + +header('Content-Type: image/apng'); +APNG(); IHDR(); PLTE(); acTL(FAST_MODE ? 1 : 12); +for ($f = 0; $f < 12; $f++) { + if (!FAST_MODE || $f === 9) { + $px = g($vs, $ns, $ps, cM($cP, $cU), $L); + fcTL($q++); $q === 1 ? IDAT($px) : fdAT($q++, $px); + } + $cP = mM(rM, $cP); $cU = mM(rM, $cU); $L = mM(rM, $L); +} +IEND(); + +function T() { + $z = file_get_contents(__FILE__, offset: __COMPILER_HALT_OFFSET__); + $s = base64_decode(str_replace("\n", '', $z)); + [$vsN, $tpsN, $rpsN, $tqsN, $rqsN] = array_values(unpack('va/vb/Cc/vd/Ce', $s)); + $vs = array_chunk(unpack('g' . 3*$vsN, $s, $o=8), 3); $o += 4*3*$vsN; + $tps = array_chunk(unpack('v' . 3*$tpsN, $s, $o), 3); $o += 2*3*$tpsN; + $rps = array_chunk(unpack('v' . 4*$rpsN, $s, $o), 4); $o += 2*4*$rpsN; + $tqs = array_chunk(unpack('v' . 3*$tqsN, $s, $o), 3); $o += 2*3*$tqsN; + $rqs = array_chunk(unpack('v' . 4*$rqsN, $s, $o), 4); + + $vs = array_map(fn($v) => [...$v, 1], $vs); + $ps = []; + foreach ($tps as [$a, $b, $c]) $ps[] = [$a, $b, $c, 0]; + foreach ($rps as [$a, $b, $c, $d]) array_push($ps, [$a, $b, $c, 0], [$c, $d, $a, 0]); + foreach ($tqs as [$a, $b, $c]) $ps[] = [$a, $b, $c, 1]; + foreach ($rqs as [$a, $b, $c, $d]) array_push($ps, [$a, $b, $c, 1], [$c, $d, $a, 1]); + + $ns = array_fill(0, count($vs), []); + foreach ($ps as [$i1, $i2, $i3]) { + $n = vN(vC(vS($vs[$i2], $vs[$i1]), vS($vs[$i3], $vs[$i2]))); + $ns[$i1][] = $n; $ns[$i2][] = $n; $ns[$i3][] = $n; + } + foreach ($ns as $i => $vn) { + $u = [0, 0, 0]; + foreach ($vn as $n) { + $u[0] += $n[0]; $u[1] += $n[1]; $u[2] += $n[2]; + } + $ns[$i] = vN($u); + } + return [$vs, $ns, $ps]; +} + +function cM($c, $u) { + $z = vN($c); $x = vN(vC($u, $z)); $y = vN(vC($z, $x)); + return [ + [$x[0], $x[1], $x[2], -vD($x, $c)], + [$y[0], $y[1], $y[2], -vD($y, $c)], + [$z[0], $z[1], $z[2], -vD($z, $c)], + [0, 0, 0, 1], + ]; +} + +function g($vs, $ns, $ps, $cM, $L) { + $us = array_fill(0, count($vs), 0); + foreach ($vs as $i => $v) { + [$x, $y, $z, $w] = mM(pM, mM($cM, $v)); + $us[$i] = [$x/$w * w/2 + w/2, -$y/$w * h/2 + h/2, $z/$w]; + } + + $pp = array_fill(0, count($ps), 0); + foreach ($ps as $i => [$i1, $i2, $i3, $o]) { + $v1 = $us[$i1]; $v2 = $us[$i2]; $v3 = $us[$i3]; + $n1 = $ns[$i1]; $n2 = $ns[$i2]; $n3 = $ns[$i3]; + $mx = min($v1[0], $v2[0], $v3[0]); + $mX = max($v1[0], $v2[0], $v3[0]); + $my = min($v1[1], $v2[1], $v3[1]); + $mY = max($v1[1], $v2[1], $v3[1]); + $pp[$i] = [ + $v1, $v2, $v3, + $n1, $n2, $n3, + $mx, $mX, $my, $mY, + $o, + ]; + } + + $px = array_fill(0, w*h, 0); + for ($y = 0; $y < h; $y++) + for ($x = 0; $x < w; $x++) { + $D = -INF; + foreach ($pp as [$v1, $v2, $v3, $n1, $n2, $n3, $mx, $mX, $my, $mY, $o]) { + if ($x < $mx || $mX < $x || $y < $my || $mY < $y) continue; + $e1 = ($v3[0]-$v2[0])*($y-$v2[1]) - ($v3[1]-$v2[1])*($x-$v2[0]); + $e2 = ($v1[0]-$v3[0])*($y-$v3[1]) - ($v1[1]-$v3[1])*($x-$v3[0]); + $e3 = ($v2[0]-$v1[0])*($y-$v1[1]) - ($v2[1]-$v1[1])*($x-$v1[0]); + if (0<$e1 || 0<$e2 || 0<$e3) continue; + $w1 = $e1 / ($e1+$e2+$e3); + $w2 = $e2 / ($e1+$e2+$e3); + $w3 = $e3 / ($e1+$e2+$e3); + $d = $w1*$v1[2] + $w2*$v2[2] + $w3*$v3[2]; + if ($d < $D) continue; + $D = $d; + $n = vN(vA(vA(vM($n1, $w1), vM($n2, $w2)), vM($n3, $w3))); + $c = .2 + .8*max(0, vD($n, $L)); + $px[$y*w+$x] = (int) ($c*127) + $o*128; + } + } + return $px; +} + +function APNG() { echo pack('C*', 0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A); } +function acTL($n) { chunk('acTL', pack('NN', $n, 0)); } +function fcTL($q) { chunk('fcTL', pack('NNNNNnnCC', $q, w, h, 0, 0, 50, 0, 1, 0)); } +function IHDR() { chunk('IHDR', pack('NNCCCCC', w, h, 8, 3, 0, 0, 0)); } +function IDAT($px) { xdat('IDAT', null, $px); } +function fdAT($q, $px) { xdat('fdAT', $q, $px); } +function IEND() { chunk('IEND', ''); } + +function PLTE() { + $s = ''; + for ($i = 0; $i < 128; $i++) $s .= pack('CCC', $i*2, $i*2, $i*2); + for ($i = 0; $i < 128; $i++) $s .= pack('CCC', 0, 0, $i*2); + chunk('PLTE', $s); +} + +function xdat($t, $q, $px) { + $s = $z = ''; + if ($q !== null) $s .= pack('N', $q); + $l = h * (w+1); + $s .= pack('CCCvv', 0x78, 0x01, 1, $l, ~$l); + for ($y = 0; $y < h; $y++) { + $z .= pack('C', 0); + for ($x = 0; $x < w; $x++) { + $z .= pack('C', $px[$y*w+$x]); + } + } + $s .= $z . pack('N', hexdec(hash('adler32', $z))); + chunk($t, $s); +} + +function chunk($t, $s) { + $z = $t . $s; echo pack('N', strlen($s)).$z.pack('N', crc32($z)); +} + +function vN($v) { $n = sqrt($v[0]**2+$v[1]**2+$v[2]**2); return $n == 0 ? $v : vM($v, 1/$n); } +function vA($v, $u) { return [$v[0]+$u[0], $v[1]+$u[1], $v[2]+$u[2]]; } +function vS($v, $u) { return [$v[0]-$u[0], $v[1]-$u[1], $v[2]-$u[2]]; } +function vM($v, $k) { return [$v[0]*$k, $v[1]*$k, $v[2]*$k]; } +function vD($v, $u) { return $v[0]*$u[0] + $v[1]*$u[1] + $v[2]*$u[2]; } +function vC($v, $u) { return [$v[1]*$u[2]-$v[2]*$u[1], $v[2]*$u[0]-$v[0]*$u[2], $v[0]*$u[1]-$v[1]*$u[0]]; } +function mM($m, $v) { + return [ + $v[0]*$m[0][0] + $v[1]*$m[0][1] + $v[2]*$m[0][2] + $v[3]*$m[0][3], + $v[0]*$m[1][0] + $v[1]*$m[1][1] + $v[2]*$m[1][2] + $v[3]*$m[1][3], + $v[0]*$m[2][0] + $v[1]*$m[2][1] + $v[2]*$m[2][2] + $v[3]*$m[2][3], + $v[0]*$m[3][0] + $v[1]*$m[3][1] + $v[2]*$m[3][2] + $v[3]*$m[3][3], + ]; +} + +__halt_compiler(); +JAS6AV9HAYvOp+69cqZdPxJKs7+U9q4+QIddP/iIrr/j46s+6X5yP2LYq79Ap +eq9QltyP6NasL89uT4/QIddPwcHmb9hqDs/zH1yP8mulr8e/Hw/DMpcP4P8fL +8tBpk/24ZdPwa6Pr9/+p0/KGV2P2xcJ7+LG6k/deRcPwRW5r4SSrM/cqZdP0i +n7r2jWrA/MVtyP7qk6r34iK4/QIddP5T2rj5i2Ks/6X5yP+Pjqz4HB5k/L4dd +Pz25Pj/JrpY/u31yP2GoOz+T/Hw/+8lcPy/8fD8Xuj4/24ZdPzYGmT9sXCc/K +GV2P3/6nT8mVuY+deRcP4sbqT/Op+49cqZdPxtKsz9Apeo9MVtyP6NasD+U9q +6+L4ddPwGJrj/j46u+2H5yP2LYqz89uT6/L4ddPwcHmT9hqDu/u31yP9Gulj+ +hL5G/UBddP+okVz9/+p2/KGV2P31cJz+LG6m/deRcPyZW5j4SSrO/cqZdP86n +7j2jWrC/MVtyP0Cl6j34iK6/QIddP3P2rr5i2Ku/6X5yP+Pjq74HB5m/QIddP +yy5Pr/Jrpa/zH1yP1CoO7/qJFe/UBddP6Evkb8mVua+deRcP4sbqb9sXCe/KG +V2P3b6nb+PG64+lBd1P2zrs78zTkM/DHd2P8vWnL9s67M/gxd1P48brj7L1pw +/DHd2PzNOQz+PG66+gxd1P2zrsz8zTkO/DHd2P9TWnD9s67O/gxd1P20brr7L +1py/DHd2PyNOQ78YtGC/MV1sP+9Zmb9MFre+DftlP8BZur9YjhA+/U10P7Ubu +7/3WZk/MV1sPxi0YL/JWbo/DftlP0wWt761G7s//U10P1iOED4YtGA/MV1sP/ +dZmT9MFrc+DftlP8lZuj+THoY7Vfp1P+m5tz/3WZm/MV1sPym0YD/JWbq/Dft +lP24Wtz61G7u//U10P1iOEL4czcm/Q1PePhMMK79BLai/P3LLPjxLkL+Tcme/ +kITdPnR6ur8TDCs/qFPePhTNyb88S5A/YHLLPjgtqL90ero/kITdPpNyZ78cz +ck/Q1PePiQMKz9BLag/P3LLPjxLkD+Tcmc/b4TdPn16uj987jS+0xFAPRxd7z +8TDCu/IlPePiXNyT88S5C/P3LLPkEtqD90erq/kITdPqRyZz/RsdO/Z38wvnB +4gz8vTfG/dR8wvkQ28D5qwPa/+5YZvlMjJL5/MeW/RFEwvlhxQr/0wr2/xQRF +vg/Ror9oeIO/Z38wvtGx079ENvC+Mh8wvi9N8b9TIyQ+t5YZvmrA9r9pcUI/v +lAwvn8x5b8P0aI/xQRFvvTCvb/RsdM/Z38wvmh4g78vTfE/dR8wvkQ28L5qwP +Y/+5YZvlMjJD5/MeU/RFEwvmlxQj/0wr0/CAVFvg/Roj9oeIM/Z38wvtmx0z9 +ENvA+dR8wvjhN8T9YcUK/RFEwvocx5T8P0aK/CAVFvvTCvT9MUhm+PX/6vh0f +AECIgk2/cXYXv91B7D+FPpq/WHQ7v9L8zz86Ivm/yXUXv3rjAD+ULwDAN+AXv ++SHKr7dQey/YHYXv4iCTb/S/M+/R3Q7v4U+mr9p4wC/yXUXvzIi+b/khyo+N+ +AXv5AvAMCIgk0/YHYXv91B7L+FPpo/R3Q7v9L8z786Ivk/yXUXv2njAL+ULwB +AN+AXv+SHKj7dQew/cXYXv4iCTT/S/M8/WHQ7v4U+mj9p4wA/2nUXvzoi+T/y +YTY9BOUiv0UNAEAgm/S+gzJRv85U9j/vqic+Jv5Uv5oJ/D82PtG/NUM6vydpm +D+Y/Om/by9Rv5g0Rj+aCfy/Jv5Uv++qJz7OVPa/gzJRvyCb9L4naZi/JEM6vy +0+0b+YNEa/Xi9Rv5j86b/vqie+Ff5Uv5oJ/L8gm/Q+gzJRv85U9r82PtE/JEM +6vydpmL+Y/Ok/Xi9Rv5g0Rr+aCfw/Jv5Uv++qJ77OVPY/gzJRv0Gb9D4naZg/ +NUM6vzY+0T+YNEY/by9Rv6D86T8TnBo+sW+Lv49y6D+/Dlg/LLmKv+CB0T9U/ ++C+wkuKv0Kv4z8b2Iy/Y7SKv3h+vT/YgdG/LLmKv78OWD+Pcui/qG+LvxOcGj +46r+O/wkuKv1T/4L5vfr2/Y7SKvxvYjL+/Dli/LLmKv9iB0b8TnBq+qG+Lv49 +y6L9U/+A+wkuKvzqv478b2Iw/Y7SKv29+vb/YgdE/LLmKv78OWL+Pcug/qG+L +v9CbGr46r+M/wkuKv1T/4D5vfr0/Y7SKvxvYjD9PPC8/tKqtv+Ierz9QcAE+s +5asv3Odwj/iHq+/tKqtv088Lz9zncK/s5asv1BwAT5PPC+/tKqtv+Ier79QcA +G+q5asv3Odwr/iHq8/tKqtv088L79zncI/s5asv1BwAb7BxJs/vhauv2pnbD9 +qZ2y/vhauv8HEmz/BxJu/tRauv2pnbL9qZ2w/tRauv8HEm7/EQb4/88m2v5c5 +/T2FmUo/O6q2v+GXoj8E5UY+Ppe7v/t5uT/hl6K/O6q2v4WZSj/7ebm/Ppe7v +wTlRj6FmUq/O6q2v+GXor8E5Ua+NZe7v/t5ub/hl6I/O6q2v4WZSr/7ebk/Pp +e7vwTlRr5LkZI/mny7vx08az8eG7E/wqa0v+2dET8ROf2988m2v8RBvj9stDi +/WMbCv46QHT8dPGu/mny7v0uRkj/tnRG/wqa0vx4bsT/EQb6/88m2vxE5/b1L +kZK/kXy7vx08a78eG7G/wqa0v+2dEb8ROf0988m2v8RBvr8xz/o+ELLEv1iNv +b4dPGs/kXy7v0uRkr/tnRE/wqa0vx4bsb+y9OG926bOP4bj+T3+0x0+QWHMP1 +r0fr6d9H4+QWHMP0HUHT6d9H6+QWHMP3jTHb6RJ6E+ngrIP2lVO77vVTs+ngr +IP5EnoT6RJ6G+ngrIPzJWOz7vVTu+ngrIP3Anob46ebE9hpPCPyjXvL5J17w+ +hpPCP0Z6sT1MF+K9YCLIP8Xnrj5J17y+hpPCPzp5sb0GhK4+DRi+P/ht6L0sZ +Rk99MO8Pw/xtz4GhK6+DRi+P35u6D34bei9DRi+P8ODrr4ogmg+Jc6+P+bmk7 +4I55M+Jc6+P2uCaD4ogmi+Jc6+Pynnkz4I55O+Jc6+PyiCaL43OTy9dCOkP+Z +0Ob7pnco9lImjP5/II74pdTk+dCOkPzc5PL2fyCM+lImjP+mdyj03OTw9dCOk +Pyl1OT7pncq9lImjP+LIIz4pdTm+dCOkP0M6PD2fyCO+lImjP2Kdyr2Dp1A90 +QWZP8csK74KLSs+0QWZP4OnUD2Dp1C90QWZPwotKz4KLSu+0QWZP4OnUL2P4b +G9CcOYP775Hb6++R0+CcOYPwnhsb2P4bE9CcOYPwH6HT6++R2+CcOYP4/hsT2 +sraC+i1KMP7luOr4fR9O9uhWMPwExsb65bjo+i1KMP6ytoL4BMbE+uhWMP5lG +072sraA+i1KMP/xuOj4fR9M9uhWMPyMxsT65bjq+i1KMP6ytoD4BMbG+uhWMP +x9H0z3V6m+/G/V4PyS4JT+bOp+/2jlxPxDMEb4QzBE+6zlxP5s6n7+bOp8/2j +lxP1PMET4QzBG+2jlxP5s6nz8kuCW/G/V4P8Tqb7/V6m8/G/V4PyS4Jb8kuCU +/CvV4P9Xqbz+kcn+/pb1hP0D7Yb9A+2E/pb1hP5Nyf7+kcn8/pb1hP1D7YT9A ++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 +vzYhIT8tzlg9QQ21v9cXJT+ndoY8QQ21v15KLT9mMwe8QQ21v8pqNj/K+eK8Q +Q21v0dUMD+gb0u9QQ21v2hZKz81f4y9QQ21v4f4Jz+5cMC9QQ21v+S/JD/FBP +W9QQ21v/G6Ij8N5Bm+QQ21v5zDIT/fwjq+QQ21v1dDIj+laFW+QQ21v8qjIz8 +XRoq+QQ21vzC8Kj/YYp++QQ21v102Nj8ZcKa+QQ21v5PiOz+w6K6+QQ21vzLn +RT8X1bK+QQ21vwbYTz9GtrO+QQ21v8dLVz+wqq6+QQ21vzC5aT9NSaa+QQ21v +4i4cT/+J5++QQ21v4Qsdz9SuJa+QQ21v2IQfD/5E42+QQ21v6YrgD8qVYK+QQ +21vxr6gT8bnl6+QQ21vxwmhD8f+Di+QQ21v54mhT+FshC+QQ21v41ehT8C0+m +9QQ21v1K4hD+Crr29QQ21v87ggz9jmmm9QQ21v0w3gT/NWgq9QQ21vyhHfT+R +tQa8QQ21v4o8dT+WJiU9QQ21v5pBgj+En7g9QQ21v51LhT8Bpuw9QQ21v0pGh +j91djI+QQ21v1uVhj+9xWM+QQ21v44ehT9VS4I+QQ21v031gj+wx4w+QQ21vx +0AgT8/NZY+QQ21v0JgfT/f4KM+QQ21v0fIdD+YGKs+QQ21vwLVaz9oPq8+QQ2 +1v9j0ZD81z7E+QQ21vz+qXT8hsLI+QQ21vxkEVj9FnYG+QQ21v69bTD8tWnC+ +QQ21vxjMQz8aFF2+QQ21v+FFPz/HR0u+QQ21v23mPD/vIDa+QQ21vzBLOz9cy +gm+QQ21vzFDOz873++9QQ21v3cSPT/7scm9QQ21v5DAPz9vRaK9QQ21v7dCRD +85tl69QQ21v5OoTz/9oVm9QQ21v4sXUz/Rsm69QQ21vzS+Xz+wq4m9QQ21vyc +WZD+pMaG9QQ21v41jaD9txsm9QQ21v0YKbT98R+29QQ21vwqCbz8u4gu+QQ21 +v9B9cT9M3SW+QQ21v2mscT9UU0K+QQ21v25PcD+t31y+QQ21v2A6bT9pj3e+Q +Q21v3juZT+cGoC+QQ21v3WSYT9d/oO+QQ21vxJLWj8HmDk9QQ21v7U1Sj8qb4 +c9QQ21v0FhQD//Qq89QQ21v16dOz8h6fM9QQ21v5SFNz9tyB8+QQ21vzbKNj/ +dJDY+QQ21v6/QNz8ls0o+QQ21v7jMOT+7C2Q+QQ21v7YxPj/Lvns+QQ21v+6T +Rz9YO4I+QQ21v+9ZTz93EIM+QQ21v/URWD/x838+QQ21v5HxYD8aTmk+QQ21v +xCvaz8ucVQ+QQ21v0Debz+Qvjk+QQ21v7A9cz9I/SU+QQ21v4IBdD9d/A0+QQ +21vw4vdD9zofI9QQ21v4s2cz9Qcsc9QQ21vzsccT/NBpk9QQ21v6XdbD9qFX0 +9QQ21v3XkaD8eM1A9QQ21v9kIZD/exiY9QQ21v40KXD8K1yM9QQ21vxkEVj97 +FK4+QQ21v5hukj6gGq++QQ21v5hukj6gGq++QQ21v6abxD57FK4+QQ21v6abx +D5CYOU8QQ21v65HYT1oke09QQ21v65HYT1oke09QQ21v7x0k7x7FK4+QQ21v7 +x0k7x7FK4+QQ21v2iR7b1oke09QQ21v2iR7b1oke09QQ21vylcz75zaJE9QQ2 +1vylcz75GtrO+QQ21v4/Cdb1GtrO+QQ21v7x0k7xCYOU8QQ21v7x0k7xCYOU8 +QQ21v2iR7b3yQiq+QQ21v0Hy7r1CYOU8QQ21v7pJjL6e76e9QQ21v1TjRb+e7 +6e9QQ21v1g5FL/y0o2+QQ21v166Cb/y0o2+QQ21v42X7r6e76e9QQ21v8HKAb ++e76e9QQ21v/T91L70/VS8QQ21v/T91L70/VS8QQ21v0JgBb+cxCA+QQ21v42 +XDr+cxCA+QQ21v/T91L6LbGc+QQ21v/T91L6LbGc+QQ21vw4tEr9Qjdc+QQ21 +vwisHL9Qjdc+QQ21v6AaL7+LbGc+QQ21v6abJL+LbGc+QQ21v6JFVr9Qjdc+Q +Q21v5zEYL9Qjdc+QQ21vzMzc7+LbGc+QQ21vzm0aL+LbGc+QQ21v3e+f7+cxC +A+QQ21v3e+f7+cxCA+QQ21v7geZb/0/VS8QQ21v23nW7/0/VS8QQ21v3e+f7+ +e76e9QQ21v3e+f7+e76e9QQ21v+xRWL/y0o2+QQ21v/LSTb/y0o2+QQ21v1pk +O7+cxCA+QQ21vyUGIb/0/VS8QQ21v9nOF7/0/VS8QQ21v9V4Sb+cxCA+QQ21v +yGwUr/0/VS826bOv/T91L70/VS826bOv9nOF7/0/VS826bOv9V4Sb+e76e926 +bOv1TjRb+e76e926bOv1g5FL/y0o2+26bOv166Cb/y0o2+26bOv42X7r6e76e +926bOv8HKAb+e76e926bOv/T91L70/VS826bOv/T91L70/VS826bOv0JgBb+c +xCA+26bOv42XDr+cxCA+26bOv/T91L6LbGc+26bOv/T91L6LbGc+26bOvw4tE +r9Qjdc+26bOvwisHL9Qjdc+26bOv6AaL7+LbGc+26bOv6abJL+LbGc+26bOv6 +JFVr9Qjdc+26bOv5zEYL9Qjdc+26bOvzMzc7+LbGc+26bOvzm0aL+LbGc+26b +Ov3e+f7+cxCA+26bOv3e+f7+cxCA+26bOv7geZb/0/VS826bOv23nW7/0/VS8 +26bOv3e+f7+e76e926bOv+xRWL/y0o2+26bOv/LSTb/y0o2+26bOv1pkO7+cx +CA+26bOvyUGIb/0/VS826bOv9nOF7/0/VS826bOv9V4Sb+cxCA+26bOvyGwUr ++e76e926bOv1TjRb+e76e9QQ21v1TjRb+e76e926bOv1g5FL+e76e9QQ21v1g +5FL/y0o2+26bOv166Cb/y0o2+QQ21v166Cb/y0o2+26bOv42X7r7y0o2+QQ21 +v42X7r6e76e926bOv8HKAb+e76e9QQ21v8HKAb+e76e926bOv/T91L6e76e9Q +Q21v/T91L70/VS8QQ21v/T91L6LbGc+26bOvw4tEr9Qjdc+26bOvwisHL9Qjd +c+QQ21vwisHL9Qjdc+26bOv6AaL79Qjdc+QQ21v6AaL7+LbGc+26bOv6abJL+ +LbGc+QQ21v6abJL+LbGc+26bOv6JFVr+LbGc+QQ21v6JFVr9Qjdc+26bOv5zE +YL9Qjdc+QQ21v5zEYL9Qjdc+26bOvzMzc79Qjdc+QQ21vzMzc7+LbGc+26bOv +zm0aL+LbGc+QQ21vzm0aL+LbGc+26bOv3e+f7+LbGc+QQ21v3e+f7+cxCA+26 +bOv3e+f7+cxCA+QQ21v3e+f7+cxCA+26bOv7geZb+cxCA+QQ21v7geZb/0/VS +826bOv23nW7/0/VS8QQ21v23nW7/0/VS826bOv3e+f7/0/VS8QQ21v3e+f7+e +76e926bOv3e+f7+e76e9QQ21v3e+f7+e76e926bOv+xRWL+e76e9QQ21v+xRW +L/y0o2+26bOv/LSTb/y0o2+QQ21v/LSTb/y0o2+26bOv1pkO7/y0o2+QQ21v1 +pkO79oke0926bOvylcz75zaJE926bOvylcz75zaJE9QQ21vylcz75GtrO+26b +Ov4/Cdb1GtrO+QQ21v4/Cdb1GtrO+26bOv7x0k7xGtrO+QQ21v7x0k7xCYOU8 +QQ21v7x0k7ywqq6+QQ21vzC5aT9NSaa+QQ21v4i4cT/+J5++QQ21v4Qsdz9Su +Ja+QQ21v2IQfD/5E42+QQ21v6YrgD8qVYK+QQ21vxr6gT8bnl6+QQ21vxwmhD +8f+Di+QQ21v54mhT+FshC+QQ21v41ehT8C0+m9QQ21v1K4hD+Crr29QQ21v87 +ggz9jmmm9QQ21v0w3gT/NWgq9QQ21vyhHfT+RtQa8QQ21v4o8dT+WJiU9QQ21 +v5pBgj+En7g9QQ21v51LhT8Bpuw9QQ21v0pGhj91djI+QQ21v1uVhj+9xWM+Q +Q21v44ehT9VS4I+QQ21v031gj+wx4w+QQ21vx0AgT8/NZY+QQ21v0JgfT/f4K +M+QQ21v0fIdD+YGKs+QQ21vwLVaz9oPq8+QQ21v9j0ZD/fqbA+26bOv2jLST8 +lBKs+26bOv/rSPz8UdqE+26bOv4ygNT+285U+26bOv7bzLT/mdYw+26bOv5s8 +KT8kfnU+26bOv8h6Ij/1MFQ+26bOv9KpHz+laFW+26bOv8qjIz8XRoq+26bOv +zC8Kj/YYp++26bOv102Nj8ZcKa+26bOv5PiOz+w6K6+26bOvzLnRT8X1bK+26 +bOvwbYTz9GtrO+26bOv8dLVz+wqq6+26bOvzC5aT9NSaa+26bOv4i4cT/+J5+ ++26bOv4Qsdz9SuJa+26bOv2IQfD/5E42+26bOv6YrgD8qVYK+26bOvxr6gT8b +nl6+26bOvxwmhD8f+Di+26bOv54mhT+FshC+26bOv41ehT8C0+m926bOv1K4h +D+Crr2926bOv87ggz9jmmm926bOv0w3gT/NWgq926bOvyhHfT+RtQa826bOv4 +o8dT+WJiU926bOv5pBgj+En7g926bOv51LhT8Bpuw926bOv0pGhj91djI+26b +Ov1uVhj+9xWM+26bOv44ehT9VS4I+26bOv031gj+wx4w+26bOvx0AgT8/NZY+ +26bOv0JgfT/f4KM+26bOv0fIdD+YGKs+26bOvwLVaz9oPq8+26bOv9j0ZD81z +7E+26bOvz+qXT8hsLI+26bOvxkEVj9FnYG+26bOv69bTD8tWnC+26bOvxjMQz +8aFF2+26bOv+FFPz9UU0K+26bOv25PcD9pj3e+26bOv3juZT+cGoC+26bOv3W +SYT+7C2Q+26bOv7YxPj/Lvns+26bOv+6TRz9YO4I+26bOv+9ZTz93EIM+26bO +v/URWD/x838+26bOv5HxYD9CYOU826bOv65HYT1oke0926bOv65HYT1oke092 +6bOvylcz75zaJE926bOvylcz75GtrO+26bOv4/Cdb1GtrO+26bOv7x0k7xCYO +U826bOv7x0k7xCYOU826bOv2iR7b3yQiq+26bOv0Hy7r1CYOU826bOv7pJjL6 +e76e926bOv1TjRb+e76e926bOv1g5FL+e76e926bOv8HKAb+e76e926bOv/T9 +1L70/VS826bOv3e+f7+e76e926bOv3e+f7+e76e926bOv+xRWL+e76e926bOv +1TjRb+e76e9QQ21v1TjRb/y0o2+26bOv42X7r6e76e926bOv8HKAb+e76e9QQ +21v8HKAb+e76e926bOv/T91L6e76e9QQ21v/T91L70/VS826bOv/T91L70/VS +8QQ21v/T91L70/VS826bOv0JgBb/0/VS8QQ21v0JgBb+cxCA+26bOv42XDr+c +xCA+QQ21v42XDr+cxCA+26bOv/T91L6cxCA+QQ21v/T91L6LbGc+QQ21v/T91 +L7y0o2+26bOv1pkO7+cxCA+26bOvyUGIb/0/VS826bOv9nOF7/0/VS8QQ21v9 +nOF7/0/VS826bOv9V4Sb/0/VS8QQ21v9V4Sb+cxCA+QQ21vyGwUr9CYOU826b +Ov65HYT1CYOU8QQ21v65HYT1oke0926bOv65HYT1oke09QQ21v65HYT1oke09 +QQ21v7x0k7x7FK4+26bOv2iR7b1oke0926bOv2iR7b1oke09QQ21v2iR7b1ok +e0926bOvylcz75oke09QQ21vylcz75zaJE9QQ21vylcz75GtrO+26bOv7x0k7 +xCYOU826bOv7x0k7xCYOU8QQ21v7x0k7xCYOU826bOv2iR7b1CYOU8QQ21v2i +R7b1pNyq+26bOvy9v7r1pNyq+QQ21vy9v7r1CYOU826bOv7pJjL5CYOU8QQ21 +v7pJjL57FK4+26bOv5hukj6gGq++26bOv5hukj6gGq++QQ21v5hukj6gGq++2 +6bOv6abxD6gGq++QQ21v6abxD57FK4+QQ21v6abxD57FK4+26bOv5hukj6gGq +++26bOv5hukj6gGq++26bOv6abxD57FK4+26bOv6abxD5CYOU826bOv65HYT1 +oke0926bOv7x0k7x7FK4+26bOv7x0k7x7FK4+26bOv2iR7b1oke0926bOv2iR +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 +26bOvxr6gT8bnl6+26bOvxwmhD+FshC+26bOv41ehT8C0+m926bOv1K4hD+Cr +r2926bOv87ggz9jmmm926bOv0w3gT/NWgq926bOvyhHfT+RtQa826bOv4o8dT ++WJiU926bOv5pBgj+En7g926bOv51LhT8Bpuw926bOv0pGhj91djI+26bOv1u +Vhj+9xWM+26bOv44ehT9VS4I+26bOv031gj9oPq8+26bOv9j0ZD81z7E+26bO +vz+qXT8hsLI+26bOvxkEVj9FnYG+26bOv69bTD8tWnC+26bOvxjMQz8aFF2+2 +6bOv+FFPz/HR0u+26bOv23mPD/vIDa+26bOvzBLOz9cygm+26bOvzFDOz873+ ++926bOv3cSPT/7scm926bOv5DAPz9vRaK926bOv7dCRD85tl6926bOv5OoTz/ +9oVm926bOv4sXUz/Rsm6926bOvzS+Xz+wq4m926bOvycWZD+pMaG926bOv41j +aD9txsm926bOv0YKbT98R+2926bOvwqCbz8u4gu+26bOv9B9cT9UU0K+26bOv +25PcD+t31y+26bOv2A6bT9pj3e+26bOv3juZT+cGoC+26bOv3WSYT9d/oO+26 +bOvxJLWj8HmDk926bOv7U1Sj8qb4c926bOv0FhQD//Qq8926bOv16dOz8h6fM +926bOv5SFNz9tyB8+26bOvzbKNj/dJDY+26bOv6/QNz8ls0o+26bOv7jMOT+7 +C2Q+26bOv7YxPj/Lvns+26bOv+6TRz9YO4I+26bOv+9ZTz93EIM+26bOv/URW +D/x838+26bOv5HxYD8aTmk+26bOvxCvaz8ucVQ+26bOv0Debz+Qvjk+26bOv7 +A9cz9I/SU+26bOv4IBdD9d/A0+26bOvw4vdD9zofI926bOv4s2cz9Qcsc926b +OvzsccT/NBpk926bOv6XdbD9qFX0926bOv3XkaD8eM1A926bOv9kIZD/exiY9 +26bOv40KXD8K1yM926bOvxkEVj8GnOU926bOvx+8Hj9M3SW+26bOv2mscT/fq +bA+QQ21v2jLST8hsLI+QQ21vxkEVj/7scm9QQ21v5DAPz9vRaK9QQ21v7dCRD +85tl69QQ21v5OoTz/9oVm9QQ21v4sXUz/Rsm69QQ21vzS+Xz+wq4m9QQ21vyc +WZD9UU0K+QQ21v25PcD+t31y+QQ21v2A6bT8HmDk9QQ21v7U1Sj/dJDY+QQ21 +v6/QNz8ls0o+QQ21v7jMOT+7C2Q+QQ21v7YxPj93EIM+QQ21v/URWD/x838+Q +Q21v5HxYD8K1yM9QQ21vxkEVj9M3SW+QQ21v2mscT/fqbA+26bOv2jLST8hsL +I+26bOvxkEVj873++926bOv3cSPT/7scm926bOv5DAPz9vRaK926bOv7dCRD8 +5tl6926bOv5OoTz/9oVm926bOv4sXUz/Rsm6926bOvzS+Xz9UU0K+26bOv25P +cD8HmDk926bOv7U1Sj9tyB8+26bOvzbKNj/dJDY+26bOv6/QNz8ls0o+26bOv +7jMOT9YO4I+26bOv+9ZTz93EIM+26bOv/URWD/exiY926bOv40KXD8K1yM926 +bOvxkEVj9FnYG+QQ21v69bTD9d/oO+QQ21vxJLWj8bnl6+26bOvxwmhD8f+Di ++26bOv54mhT+FshC+26bOv41ehT8C0+m926bOv1K4hD9jmmm926bOv0w3gT+E +n7g926bOv51LhT8Bpuw926bOv0pGhj91djI+26bOv1uVhj+9xWM+26bOv44eh +T9FnYG+26bOv69bTD/9oVm926bOv4sXUz/Rsm6926bOvzS+Xz98R+2926bOvw +qCbz8u4gu+26bOv9B9cT9UU0K+26bOv25PcD+cGoC+26bOv3WSYT9d/oO+26b +OvxJLWj+Qvjk+26bOv7A9cz9I/SU+26bOv4IBdD9d/A0+26bOvw4vdD9zofI9 +26bOv4s2cz9Qcsc926bOvzsccT9M3SW+26bOv2mscT9oke0926bOv65HYT1ok +e0926bOv7x0k7xoke0926bOv2iR7b30/VS826bOv/T91L70/VS826bOv0JgBb ++LbGc+26bOv/T91L6LbGc+26bOvw4tEr+LbGc+26bOv6abJL+LbGc+26bOv6J +FVr+LbGc+26bOvzm0aL+LbGc+26bOv3e+f7/0/VS826bOv23nW7/0/VS826bO +v3e+f7/0/VS826bOv9nOF7/0/VS826bOv9V4Sb9oke0926bOv65HYT1oke092 +6bOv2iR7b1oke0926bOvylcz76gb0u926bOv2hZKz9jmmm926bOv0w3gT/9oV +m926bOv4sXUz8EAAYABQAJAAgABwAOABAADwATABIAEQAYABoAGQAcABsAGgA +hACMAIgAkACUAIwAkAAMAJQAGAAgAJwAJAAsACAAQABIAKQATABUAEgAaABsA +KwAcAB4AGwAjACUALQAlAC8ALgAIADIAMQASADUANAAbADgANwAtADoALAAuA +DsALQAuADwAOwAuAC8APAAnAD0AJgAxAD4AJwAxAD8APgAxADIAPwApAEAAKA +A0AEEAKQA0AEIAQQA0ADUAQgAqAEMANgArAEQAKgA3AEUAKwA3AEYARQA3ADg +ARgA1AEMAVwBXAFoAaQBbAFwAawBdAG4AbQBeAG8AXQBeAHAAbwBfAGAAcABh +AHIAcQBiAHMAYQBiAHQAcwBjAGQAdABlAHYAdQBmAHcAZQBmAHgAdwBnAGgAe +ABpAHoAeQBqAGwAaQBuAH8AbQByAIMAcQB2AIcAdQB6AHwAeQCLAJMAigCNAJ +QAfgCPAJUAggCRAJYAhgCTAKAAoQCUAKQApQCVAKcAqACWAKsArABhAZ8AoAC +YAIsAmQCaAI0AmwBiAZsApwCcAI8AnQCeAJEAnwCtAK8ArgCtAK4AsACtALMA +twCuALUAtACvALYAsQCwALgAswC1ALwAtAC2ALkAsQC3ALoAsgC3AL8AugC4A +LsAswDIAM0AzADBAM0AyADCAM4AyQDDAM4AwgDEAM8AygDFAM8AxADGANAAyw +DHANAAxgDNANEAzADNANIA0QDOANMAyQDOANQA0wDPANUAygDPANYA1QDQANc +AywDQANgA1wDZANoA5QDeANsA5gDfANwA5wDgAN0A6ADZAOUA5ADeAOYA4QDf +AOcA4gDgAOgA4wDaAOwA6wDbAPAA7wDcAPQA8wDdAPgA9wD7APwAEgH/AP0A/ +gAEAQMBAgEeAQkBBgEHAQgBHgEeAQgBCQEGAQkBCgEBAQMBCwH/AAwBDQEIAQ +4BCQEJAQ4BEQEPAQwBCwEQAQoBCQEQAQkBEQELARYBEgELARABFgEVAREBEwE +VARABEQEXARIBFgEWARUBGAEUAWoAGwETARQBGwEpARUBEwEZARUBKQEXARYB +GAH7ABcB+QATARsBKQEaARwBGwEdAR4BIQEGAQUBHwECAQEBIgEiAQEBAAH/A +P4AIwEhAQYBHwEeAQYBIQEiAQABIAEcASEBJAEhASIBJQElASABJgEjAScBJg +EkASEBKAEbARwBJAEbASQBKAH6ACUBJgEYASUB+gApARsBKAEpASgBGQEZASU +BGAEYAfoAFwEnAfkA+gAqASwBKwEsAS0BKwEuAS8BQgEuATABLwE1ATMBNAE2 +ATUBNAE4ATsBNwE8ATYBNwE1ATYBPAE3ATsBPwE7AToBPgFAATcBPwFAATwBN +wFBATwBQAFBATUBPAFCATUBQQFCAT0BNQFAAT8BRQE/ATsBQwFDAT4BRAFGAU +ABRQFBAUABRgEtAUIBQQEtAUEBRwFHAUEBRgFFAUMBSAFGAUUBSAErAS0BRwF +JAUMBRAFJAUQBSgFIAUkBTwFOAUgBTwFOAUYBSAFLAUYBTgFLAUcBRgFMAUcB +SwEqASsBTAEqAU0BXQFNASoBTAFeAUwBSwFOAV4BSwFQAV8BTwFRAVABSgFRA +WABUAFSAWABUQE7ATgBWQE4ATcBUwFTATcBNgFTATYBVAFUATYBNAE0ATMBVQ +EzAVcBVQEzATIBVwEyATEBVgFXATIBVgFUATQBVQFYATgBUwFZATgBWAFXAVY +BWgFcAVUBWwFcAVQBVQFcAVMBVAFYAVMBXAFbAVoBXQFNAVsBXQFeAVsBTQFe +AVwBWwFfAVgBXAFgAVkBXwFfAVwBTgFOAVwBXgFPAV8BTgEHAAgABgAKAAsAC +QARABIAEAAUABUAEwAdAB4AHAAAAAMAJAAGACcABQAQACkADwAaACsAGQAjAC +0AIgAlAAMAMAAIAAsAMwASABUANgAbAB4AOQAtACUALgAlADAALwAnAAgAMQA +IADMAMgApABIANAASADYANQArABsANwAbADkAOAAsADoAOQAtADsAOgAmAD0A +MAAnAD4APQAoAEAAMwApAEEAQAA1ADYAQwAqAEQAQwArAEUARABEAFgAQwBXA +EMAWgBpAFoAagBaAFsAawBdAG8AbgBeAF8AcABhAHMAcgBiAGMAdABlAHcAdg +BmAGcAeABpAGwAegBcAG0AfgBtAH8AfgBgAHEAggBxAIMAggBkAHUAhgB1AIc +AhgBoAHkAigB5AHwAigB8AIsAigB/AI0AfgCDAI8AggCHAJEAhgCLAJgAkwCM +AJkAiwCMAKIAmQCMAKUAogCNAJoAlACOAJsAjQCOAKYAmwCOAKgApgCPAJwAl +QCQAJ0AjwCQAKkAnQCQAKwAqQCRAJ4AlgCSAJ8AkQCSAJcAnwCSAKEAlwBhAa +oAnwCgAJMAmABhAaAAmQCgAJgAmQCkAJQAmgCjAKQAmwCkAJoAmwBiAaMAmwC +nAJUAnABiAacAnQCnAJwAnQCrAJYAngCqAKsAnwCrAJ4AnwCwAK4AtACuAK8A +sQCvAK0AsgCtALcAsgCtALAAswCuALEAtQCvALIAtgCwALQAuAC1ALEAvQCxA +LkAvQC2ALIAvgCyALoAvgC3ALMAvwCzALsAvwC4ALQAwAC0ALwAwAC1AMEAvA +C2AMMAuQC4AMcAuwDBALUAwgC1AL0AwgDDALYAxAC2AL4AxADFALoAxgC6AL8 +AxgDHALgAyAC4AMAAyADBAMkAzQDBAMIAyQDDAMoAzgDDAMQAygDFAMsAzwDF +AMYAywDHAMwA0ADHAMgAzADMANEA2ADNAMkA0gDJANMA0gDOAMoA1ADKANUA1 +ADPAMsA1gDLANcA1gDQAMwA2ADXANgA2QDRANoA2ADRAN4A2gDRANIA3gDTAN +sA0gDTAN8A2wDTANQA3wDVANwA1ADVAOAA3ADVANYA4ADXAN0A1gDXANkA3QD +ZANgA2gDeANIA2wDfANQA3ADgANYA3QDeAOEA2gDfAOIA2wDgAOMA3ADZAOQA +3QDlANoA6wDaAO0A7ADmANsA7wDbAPEA8ADnANwA8wDcAPUA9ADoAN0A9wDdA +OkA+AD8AP0ADQEAAQwB/wAAAQEBDAECAQMBAQEFAQYBCgH9AP8ADQEMAQEBCw +EEAQUBCgEDAQQBCgENAQwBDwH8AA0BDwEDAQoBCwELAQoBEAH8AA8BEgEPAQs +BEgEWARABFQH7ABIBFwEYARUBGQH5ABcB+gBqABoBGwEcAR0BIQEdAQcBHgEf +AQUBBAEgAQAB/wAfAQQBAgEiAR8BAgEgAf8AIwEhAR8BIgElASIBIAEmASABI +wEoASEBJQH6ACYBJwEZASgBJQE7ATkBOgE9ATMBNQFCAS8BPQFDATsBPgFFAT +8BQwFIAUMBSQFMASsBRwFeAU0BTAE5AVkBUgE5ATsBWQFSAVkBYAFfAVkBWAF +QAWABXwFQAUkBSgFPAUkBUAGqAGEBowCjAJkApACqAKMAYgGqAJ0AqwCjAGEB +mQCqAGIBnQBXAVoBWwFVAQUAAgABAAQADQALAAoADAAPAA0ADAAOABcAFQAUA +BYAGQAXABYAGAAgAB4AHQAfACIAIAAfACEAMAADAAIAJgACAAMAAAABACYAAg +AFACcAMwALAA0AKAAoAA0ADwApADYAFQAXACoAKgAXABkAKwA5AB4AIAAsACw +AIAAiAC0ASABHAEYAOABJAEgAOAA5AEkAOQA6AEoASgA6ADsASwBMAEsAOwA8 +AE0ATAA8AC8ATgBNAC8AMABOADAAPQBPAE8APQA+AFAAUQBQAD4APwBSAFEAP +wAyAFMAUgAyADMAUwAzAEAAVABUAEAAQQBVAFYAVQBBAEIAVwBWAEIANQBYAE +QARQBZAEcAWQBFAEYAWwBYAFkAXABtAFwAWQBHAF0AbQBHAEgAXgBdAEgASQB +eAEkASgBfAF8ASgBLAGAAcQBgAEsATABhAHEATABNAGIAYQBNAE4AYgBOAE8A +YwBjAE8AUABkAHUAZABQAFEAZQB1AFEAUgBmAGUAUgBTAGYAUwBUAGcAZwBUA +FUAaAB5AGgAVQBWAGkAeQBWAFcAWgBDAFgAWwBrAGwAagBaAHwAegBsAHsAfQ +B7AGwAawB+AH0AawBcAH8AbgBvAIAAgQCAAG8AcACCAIEAcABgAIMAcgBzAIQ +AhQCEAHMAdACGAIUAdABkAIcAdgB3AIgAiQCIAHcAeACKAIkAeABoAIsAfAB7 +AIwApQCMAHsAfQCUAKUAfQB+AI0AfwCAAI4AqACOAIAAgQCVAKgAgQCCAI8Ag +wCEAJAArACQAIQAhQCWAKwAhQCGAJEAhwCIAJIAoQCSAIgAiQCTAKEAiQCKAJ +cAoQCgAJ8AogClAKQAmQCmAKgApwCbAKkArACrAJ0AyADAALwAwQDCAL0AuQD +DAMQAvgC6AMUAxgC/ALsAxwDpAN0A5ADqAO0A2gDhAO4A8QDbAOIA8gD1ANwA +4wD2ABQBEwERAQ4BQgEtASwBLgEyAS8BMAExATMBPQEvATIBZQFjAWYBZAFjA +WUBbwFnAXABcgFnAW8BcQFnAXIBaAFnAXEBbQFpAW4BbAFpAW0BawFpAWwBag +FpAWsBjAGOAY0BiwGOAYwBigGOAYsBigGPAY4BiQGPAYoBiQGQAY8BiAGQAYk +BiAGRAZABiAGSAZEBiAG/AZIBvwGTAZIBiAGpAb8BvwGUAZMBvgGUAb8BvQGU +Ab4BiAGqAakBvAGUAb0BhwGqAYgBhwGrAaoBhwGsAasBhgGsAYcBuwGUAbwBu +wGVAZQBhgGtAawBugGVAbsBhQGtAYYBugGWAZUBhQGuAa0BuQGWAboBhAGuAY +UBhAGvAa4BuAGWAbkBuAGXAZYBhAGwAa8BtwGXAbgBtwGYAZcBgwGwAYQBgwG +xAbABtgGYAbcBggGxAYMBtgGZAZgBggGyAbEBtQGZAbYBtAGZAbUBgQGyAYIB +gQGzAbIBswGZAbQBgQGZAbMBgQGaAZkBgAGaAYEBgAGbAZoBfwGbAYABfwGcA +ZsBfgGcAX8BfgHXAZwBfQHXAX4BfQHAAdcB1gGcAdcB1QGcAdYBfQHBAcAB1A +GcAdUBfAHBAX0B0wGcAdQBfAHCAcEB0wGdAZwB0gGdAdMBewHCAXwB0gGeAZ0 +BewHDAcIB0QGeAdIB0AGeAdEBegHDAXsBegHEAcMB0AGfAZ4BzwGfAdABzgGf +Ac8BegHFAcQBegHGAcUBeQHGAXoBzgGgAZ8BzQGgAc4BeQHHAcYBeAHHAXkBz +AGgAc0BzAGhAaABeAHIAccBywGhAcwBeAHJAcgBygGhAcsBdwHJAXgBygGiAa +EBdwHKAckBdwGiAcoBdgGiAXcBdgGjAaIBdQGjAXYBdQGkAaMBdAGkAXUBdAG +lAaQBcwGlAXQBcwGmAaUBcwGnAaYBqAGnAXMB2AHaAdkB2AHbAdoB4wHlAeQB +4wHoAeUB6AHmAeUB4wHpAegB5wHmAegB4wHnAekB4wHmAecB4wHcAeYB4wHdA +dwB4gHdAeMB4AHeAeEB4AHfAd4BAwIFAgQCAwLqAQUC6wHtAewB6wHuAe0BAQ +IDAgICAQLqAQMCAQLrAeoBAQLuAesBAQLvAe4BAQLwAe8B/wEIAgAC/wEJAgg +CBgLxAQcCBgLyAfEB/QH/Af4B/QEJAv8B/QEGAgkC/QHyAQYC/QHzAfIB/QH0 +AfMB+wH5AfwB+wH6AfkB9wH1AfgB9wH2AfUBCwIMAgoCJQInAiYCJQINAicCD +gIQAg8CDgIRAhACJAITAhICIgIqAiMCIgIrAioCKAIUAikCKAIVAhQCIAIiAi +ECIAIrAiICIAIoAisCIAIVAigCIAIWAhUCIAIXAhYCHgIcAh8CHgIdAhwCGgI +YAhsCGgIZAhgCLAIvAi0ChwKGAokCiAKHAokCigKJAosCigKEAosChAKDAosC +iQKGAoUCiQKFAooChQKEAooCqAKPAqkCjQKMAoMCjAKLAoMCpAKDAqUCpgKDA +oICgwKmAqUCrQKcAq4CrQKdApwCnQKtAn8CrQKsAn8CrAKAAn8CrAKrAoACqw +KqAoACqgKBAoACfwJ+Ap0CnQJ+Ap4CfgJ9Ap4CngJ9Ap8CfQJ8Ap8CnwJ8AqA +CfAJ7AqACoAJ7AqECkAKPAqcCsgK0ArMCsgK3ArQCtwK1ArQCsgK4ArcCtgK1 +ArcCsgK2ArgCsgK1ArYCsgKwAq8CsQKwArICvQK/Ar4CvQK5Ar8CvQK6ArkCv +QK7AroCvQK8ArsCwQLQAsAC1wLaAtgC2ALjAtcC5QLoAuYC8QLzAvIC8QL0Av +MC+gL1AvsC+AL2AvkC+AL3AvYCBgMIAwcDBwMKAwYDFQMWAxQDFwMZAxgDGAM +bAxcDtAOTA7UDtQOTA7YDkwOSA7gDkgORA7gDkQOQA7gDuAOQA6MDpQOPA6YD +jwOOA6YDpgOOA6cDjgONA6cDpwONA6gDjQOMA6gDqAOMA6kDqQOMA6oDjAOLA +6oDqgOLA6sDiwOKA6sDxAOfA8UDnwOeA8UDxQOeA8YDxgOeA8cDxwOdA8gDyg +OcA8sDwAO/A4IDvwODA4IDvwO+A4MDvgO9A4MDzQOaA84DzAOaA80DzAObA5o +DzAPLA5sDzgOaA88DuQPQA4UDuQOFA7oDhQOEA7oDugOEA7sDvAPRA4MDvAOD +A70DzwOGA9ADmgOGA88DmgOHA4YDmgOZA4cDmQOIA4cDmQOJA4gDmQOYA4kDr +QOsA4kDlwOJA5gDrgOXA68DrwOXA7ADlwOWA7ADsAOWA7EDlgOVA7EDsQOVA7 +IDsgOUA7MDrAOKA4kDrAOrA4oDhgOFA9ADuwNnA2YDuQN6A9ADuQNlA2QDZgO +6A7sDpANVA1QDVQOkA6UDowNUA1MDVAOjA6QDpQNWA1UDewOzA9IDtAN7A9ID +YwO3A7gD4wP0A/UD4wPuA90D5APtA9sD7QPcA9sDBwT4AwgEAAT/AwkECgT/A +wsE/wP+AwsECwT+AwwE/gP9Aw0EAgT8AwME+wP6AwQEBQT6Aw4E+gP5Aw4EDg +T5AwYEAQT3AwgE9wMBBPYDEAQRBA8EGgQbBBIEHQQaBBIEEwQcBBIEGAQZBBQ +EFwQYBBQEFgQXBBQEFQQWBBQEHwQgBB4EIQQjBCIELwIsAi4CMQIxAi4CMAIz +AjMCMAIyAjUCNwI0AjYCOAI7AjkCOgI9Aj0COgI8Aj8CPwI8Aj4CQQJBAj4CQ +AJDAkMCQAJCAkUCRQJCAkQCRwJHAkQCRgJJAkkCRgJIAksCSwJIAkoCTQJNAk +oCTAJPAk8CTAJOAlECUQJOAlACUwJTAlACUgJVAlUCUgJUAlcCVwJUAlYCWQJ +ZAlYCWAItAlwCWgJbAl4CXgJbAl0CYAJgAl0CXwJhAqECewKjAqICYwJiAokC +igJkAmMCigKLAosCjAJlAmQCjAKNAmYCZQKNAo4CZwJmAo4CjwJoAmcCjwKQA +mkCaAKQApECagJpApECkgJrAmoCkgKTAmwCawKTApQCbQJsApQClQJuAm0ClQ +KWAm8CbgKWApcCcAJvApcCmAJxAnACmAKZAnICcQKZApoCcwJyApoCmwJ0AnM +CmwKcAnUCdAKcAp0CdgJ1Ap0CngJ3AnYCngKfAngCdwKfAqACeQJ4AqACoQJ6 +AnkCxALCAsMCxgLIAsUCxwLKAsoCxwLJAswCzgLLAs0CzwLTAtEC0gLVAtUC0 +gLUAtYC2gLXAtkC2wLeAtwC3QLgAuAC3QLfAuEC5ALiAuMC2ALoAuUC5wLqAu +oC5wLpAuYC7QLrAuwC7wLvAuwC7gLwAv4C/AL9AgADAgP/AgEDBAMEAwEDAwM +FAwsDCQMKAwcDDgMMAw0DEAMSAw8DEQMTAxwDGgMbAxgDOgM7AysDKgMtAzwD +LAMdAy4DHgMsAzwDLgMvAx8DHgMvAzADIAMfAzEDMgMiAyEDMgMzAyMDIgMzA +zQDJAMjAzQDNQMlAyQDNQM2AyYDJQM2AzcDJwMmAzcDOAMoAycDOAM5AykDKA +M5AzoDKgMpAz8DPQM+A0ADuwOEA9EDvANnA7sDvANoA2gDvAO9A2kDagO/A8A +DawNrA8ADwQNsA2wDwQPCA20DbgPDA8QDbwNvA8QDxQNwA3ADxQPGA3EDcQPG +A8cDcgNyA8cDyANzA3MDyAPJA3QDdAPJA8oDdQN1A8oDywN2A3YDywPMA3cDd +wPMA80DeAN4A80DzgN5A3kDzgPPA3oDZQO5A7oDZgNWA6UDpgNXA1cDpgOnA1 +gDWAOnA6gDWQNZA6gDqQNaA1sDrgOvA1wDXAOvA7ADXQNdA7ADsQNeA14DsQO +yA18DXwOyA7MDewNgA7QDtQNhA2EDtQO2A2IDYgO2A7cDYwOgA6EDUQNQA6ED +ogNSA1EDfAN9A0IDQQN9A34DQwNCA34DfwNEA0MDfwOAA0UDRAOAA4EDRgNFA +4EDggNHA0YDggODA0gDRwOGA4cDSgNJA4cDiANLA0oDiAOJA0wDSwOJA4oDTQ +NMA4oDiwNOA00DiwOMA08DTgPeA+8D8APfA98D8APxA+AD4QPyA/MD4gPVA+c +D6APWA9YD6APpA9cD1wPpA+oD2APYA+oD6wPZA9kD6wPsA9oD5QPTA9QD5gM= |
