LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBLb3JlYW4gTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgKEMpIDE5OTkgRCBBIFBpY2tsZXMKICogQ29weXJpZ2h0IDIwMDUgWXVuU29uZyBId2FuZwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgpMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19ERUZBVUxUCgpTVFJJTkdUQUJMRQp7CiAgV0NNRF9BVFRSSUIsICJBVFRSSUIgtbW/8ri7XG4iCiAgV0NNRF9DQUxMLAoiPLnoxKHGxMDPIMDMuKc+wLsgyKPD4ihDQUxMKcfPtMIgsM3AuiC56MShIMbEwM++yL+hvK0gILTZuKUguejEoSDGxMDPIL7IwMcgXG5cCrjtt8nAuyC757/rx8+0wiCwzcDUtM+02S4guejEoSDGxMDPwMwgwb634cfPuOkgLCDBpr7uscfAuiAgsdewzcC7IMijw+LH0SBcblwKxsTAz8fRxdcgtbm+xrCptM+02S4gIENBTEwguO23ycC6IMijw+LHz7TCILD6waS/obytILjFsLO6r7z2uKYgsKHB/bTPtNkuXG5cClxuXAqx4rq7ILXwt7rF5Lius6ogyK+w5rqvvPazqiCx4sW4uKYgudmy2bTCILDNwLogyKPD4sDav6EgwMfH2CC787zTtce+7rytIMijw+K1yCAgXG5cCrD6waS/obi4IMD7v+u1y7TPtNkuXG4iCgogIFdDTURfQ0QsICAgICAiIENEILW1v/K4u1xuIgogIFdDTURfQ0hESVIsICAiIENIRElSILW1v/K4u1xuIgoKICBXQ01EX0NMUywgICAgIkNMUyDE3LzWIMituOkgsfqy/cj3XG4iCgogIFdDTURfQ09QWSwgICAiQ09QWSC1tb/yuLtcbiIKICBXQ01EX0NUVFksICAgIkNUVFkgtbW/8ri7XG4iCiAgV0NNRF9EQVRFLCAgICJEQVRFILW1v/K4u1xuIgogIFdDTURfREVMLCAgICAiREVMILW1v/K4u1xuIgogIFdDTURfRElSLCAgICAiRElSILW1v/K4uyBcbiIKCiAgV0NNRF9FQ0hPLAoiRUNITyA8ua7A2r+tPsC6IDy5rsDav60+wLsgx/bA5yDFzbnMs86/oSC6uL+pwd20z7TZLlxuXApcblwKRUNITyBPTrTCILnoxKHGxMDPv6G8rSC02cC9v6Egv8C0wiC48LXnILjtt8nAuyC9x8fgsaux4iDA/L+hIMXNucyzzr+hILq4v6nB3bTPtNlcblwKXG5cCkVDSE8gT0ZGILTCIEVDSE8gT06w+iC53bTrwMcgwM/AuyDH1bTPtNkuIChFQ0hPILTCIE9GRrChILHiurspXG5cCkVDSE8gT0ZGILjtt8nAuiAgvcXIo7ChIMH4x+C1x7TCILDJILq4v6nB1rTCsMkguLe9wLTPtNkuXG4iCgogIFdDTURfRVJBU0UsICAiRVJBU0UgtbW/8ri7XG4iCgogIFdDTURfRk9SLAoiRk9SILjtt8nAuiAgxsTAzyDH0SC8wsauv6G8rSCworCiwMcguO23ycC7IL3Hx+C9w8WzILanILvnv+suXG5cClxuXAq5rrn9OiBGT1Iguq+89iBJTiAoc2V0KSBETyC47bfJXG5cClxuXAogd2NtZCC+yL+hvK0gwbjA58fPwfYgvsq0wiC56MShIMbEwM+/oSBGT1K4piC757/rx9K3wbjpILXOILCzwMcgJbChIMfKv+TH1bTPtNkuXG4iCgogIFdDTURfR09UTywKIlRoZSBHT1RPICC47bfJwLoguejEocbEwM8gvsi/obytILTZuKUgus660MC4t84gvcfH4MjluKfAuyC52bLftM+02S5cblwKXG5cCkdPVE/AxyDFuLDZwM4gtvO6p8C6ILD4uenAuyDG98fUx9i8rSAyNTXA2rHuwfYgsKG0ycfPtNlcblwKKLTZuKUgv+6/tcO8waa/obyttMIgtNm4piC89rW1IMDWtNkpLlxuXAoguLi+4CAysLOzqiC09SC4ucC6ILW/wM/H0SC287qnwMwgwbjA58fSILDmv+wguejEocbEwM/AuiDDubn4wrAgsM24uCBcblwKvcfH4L3DxbMgsM3A1LTPtNkuIMG4wOfHz8H2IL7KtMIgtvO6p7fOIEdPVE+4piC9w7W1x9G02bjpILnoxKHGxMDPIL3Hx+DAuiBcblwKwd+03LXLtM+02S5cblwKXG5cCkdPVE+0wiC068itvcTAuLfOILvnv+u1ySCw5r/sIL7GuasgwM+1tSC+yMfVtM+02S5cbiIKCiAgV0NNRF9IRUxQLCAgICJIRUxQILW1v/K4u1xuIgoKICBXQ01EX0lGLAoiSUa0wiC47bfJwLsgvLHFw8D7wLi3ziC9x8fgIMfSILanILvnv+vH0bTZLlxuXApcblwKU3ludGF4OglJRiBbTk9UXSBFWElTVCDGxMDPwMy4pyC47bfJXG5cCglJRiBbTk9UXSBzdHJpbmcxPT1zdHJpbmcyILjtt8lcblwKCUlGIFtOT1RdIEVSUk9STEVWRUwgvP3A2iC47bfJXG5cClxuXAq47bfJwMcgw7m5+MKwIMf8vcS/obytLCBzdHJpbmcxILD6IHN0cmluZzK0wiC53bXlvcMgMrCzwMcgtfu/yMelt85cblwKtdG3wbP1vsa+3yDH1bTPtNkuILTrvNK5rsDatMIgsbi60MfPwfYgvsq9wLTPtNkuXG4iCgogIFdDTURfTEFCRUwsICAiTEFCRUzAuiC18L26xakgury3/SC287qnwLsgvLPBpMfSILanILvnv+suICBcblwKXG5cClN5bnRheDogTEFCRUwgW7XltvPAzLrqOl1cblwKwMwguO23ycC6ILTnvcXAzCDB1r7uwfggteW288DMuuq/oSC79SC6vLf9ILbzuqe/7yCz1sC7vPYgwNa1tbfPIMfSsM3AzLTZLlxuXApWT0wguO23ycC4t84gtfC9usWpILq8t/0gtvO6p8C7ILq8ILz2IMDWtNkuXG4iCgogIFdDTURfTUQsICAgICAiTUQgtbW/8ri7XG4iCiAgV0NNRF9NS0RJUiwgICJNS0RJUiC1tb/yuLtcbiIKICBXQ01EX01PVkUsCiJNT1ZFtMIgxsTAz8DMs6ogtfC3usXkuK64piDGxMDPvcO9usXbIL7Iv6EgwNa0wiC79bfOv+4gsPfAuLfOICDA57noxKHH1C5cblwKXG5cCri4vuAgv8Ww3MH2tMIgvsbAzMXbwMwgx8+zqsDHILXwt7rF5LiutvO46SC48LXnIMbEwM+w+iDHz8CnILXwt7rF5LiuILnYv6FcblwKwNa0wiDGxMDPtbUgwMy1v7XJILDNwMy02S5cblwKTU9WRbTCILi4vuAgv8C3obXHsO0gu/W3zr/uIMbEwM/AzCC02bilILW1vbogteW288DMuuogua7A2rimILChwfaw7SDA1rTZuOlcblwKvcfG0MfVtM+02S5cbiIKCiAgV0NNRF9QQVRILAoiUEFUSCC0wiB3Y21kIMW9u/YgsOa3zrimILq4v6nB1rDFs6ogudmy3i5cblwKXG5cClBBVEi4piDEobjpICDH9sDnIFBBVEggvLPBpMC7ILq4v6nB2SCwzcDUtM+02SAowMywzcC6ILTnvcXAxyB3aW5lLmNvbmYgxsTAz7+hIFxuXArB1r7uwfggsKrAuLfOIL3DwNu1yikuIFBBVEgguO23yb+hILv1ILCqwLsgwdzAuLfOveEgvLPBpMC7ILnZstwgvPYgwNa9wLTPtNkuXG5cClxuXAq2x8fRICBQQVRIIMivsOYguq+89rimILvnv+vH2LytIFBBVEi4piCw7cSlILz2tbUgwNa9wLTPtNlcblwKLCC/uTpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcCBcbiIKCiAgV0NNRF9QQVVTRSwKIlBBVVNFtMIgJ1ByZXNzIFJldHVybiBrZXkgdG8gY29udGludWUnILjevLzB9rimIMituOm/oSC6uL+pwdaw7SBcblwKu+e/68DasKEguK7FzyDFsLimILSpuKYgtqex7sH2ILHitNm4si4gwMywzcC6IMHWt84guejEocbEwM+/obytICC9usWpuLDAuyBcblwKs9HEobDUIMfPtMIgwMzA/CC47bfJwMcgsOGw+rimIMDQtbW3zyDH0bTZXG4iCgogIFdDTURfUFJPTVBULAoiUFJPTVBUICC47bfJtvPAziDHwbfSx8HGriC8s8GkLlxuXApcblwKwMwgua7A2rTCIHdjbWSwoSDA1LfCwLsgseK02biusO0gwNbAuyC2pyC9w8DbIMHZv6Egs6rFuLOqtMIgUFJPTVBUICBcblwKILjtt8kosde4rrDtIL26xuTAzL26ILTZwL2/oSm/oSC12rX7uKW02S5cblwKXG5cCrXawMcgua7A2sDHILmuwNq/rcDHIMavurDH0SDAx7nMILyzuO06XG5cClxuXAokJCAgICC03revILHiyKMgICAgICAgICAkXyAgILbzwM7Hx7XlICAgICAgICAgICAgJGIgICAgxsTAzMfBILHiyKMgKHwpXG5cCiRkICAgIEPH9sDnILOvwqUgICAgICAgICRlICAgIMDMvbrEycDMx8EgICAgICAgICAkZyAgICA+ILHiyKNcblwKJGwgICAgPCCx4sijICAgICAgICAgICAgJG4gICAgx/bA5yC15bbzwMy66iAgICAgICRwICAgIMf2wOcgsOa3zlxuXAokcSAgICC17sijILHiyKMgICAgICAgICAkdCAgICDH9sDnIL3DsKMgICAgICAgICAgJHYgICAgd2NtZCC59sGvXG5cClxuXArHwbfSx8HGrrChILHiuru788XCwM4gw6S3ziDHwbfSx8HGrrmuwNq4piDA57yzwaTHz8H2IL7KsO0gUFJPTVBUILjtt8nAuyBcblwKu+e/68ffwLsgtqcgLMDMsM3AuiDH9sDnILXwt7rF5LiuICjG98fUx9i8rcf2wOcgteW288DMuuogua7A2ikgv6EgXCK6uLTZIMWrKD4pXCJcblwKseLIo7ChILXatfu4pbTZtMIgsMkgwdbAx8fPvcO/wC4gKLjtt8kgUFJPTVBUICRwJGe31iCwsMDMKS5cblwKXG5cCsDMIMfBt9LHwcautMIgUFJPTVBUIMivsOYguq+89iCwqsDHILqvsOa/oSDAx8fYILnZsvAgvPYgwNa9wLTPtNksXG5cCrHXt6G8rSC47bfJICdTRVQgUFJPTVBUPcXYvbrGrie0wiAnUFJPTVBUIMXYvbrGrr/NILCwwLogwM/AuyDH1bTPtNlcbiIKCiAgV0NNRF9SRU0sCiJSRU23ziC9w8Dbx8+0wiC47bfJILbzwM7AuiAosPi56cC7IMb3x9TH2LytKSC+xrmrwM+1tSC+yCDH1bTPtNksXG5cCrHXuK6w7SC56MShxsTAz7+hILyzuO3AuyCz1rTCtaUgu+e/68fVtM+02S5cbiIKCiAgV0NNRF9SRU4sICAgICJSRU4gILW1v/K4uyBcbiIKICBXQ01EX1JFTkFNRSwgIlJFTkFNRSC1tb/yuLtcbiIKICBXQ01EX1JELCAgICAgIlJEICC1tb/yuLtcbiIKICBXQ01EX1JNRElSLCAgIlJNRElSILW1v/K4u1xuIgoKICBXQ01EX1NFVCwKIlNFVCAgd2NtZCDIr7DmILqvvPYguri/qcHWsMWzqiC52bLZseIuXG5cClxuXAq+xrmrILjFsLO6r7z2sKEgvvi0wiBTRVTAuiC48LXnIMf2wOcgyK+w5rqvvPa4piC6uL+pwdwuXG5cClxuXArIr7DmILqvvPa4piC4uLXpsMWzqiCw7cSltqcgu+e/68fPtMIgua65/TpcblwKXG5cCiAgICAgIFNFVCA8uq+89j49PLCqPlxuXApcblwKPLqvvPY+ILD6IDywqj7AuiDEs7ivxc0tua7A2r+tIMDMtNkuILndteW9wyC17sijKD0pseLIoyC+1b+hIL7utrJcblwKsPi56bW1IMDWvu68sSC+yLXHsO0sILqvvPYgwMy4p7+hILO7us4gsPi56bW1IMDWwLsgvPYgvvi02S5cblwKXG5cCldpbmUgvsa3ob+hvK0sIL/uv7XDvMGmILnYwMcgyK+w5sC6IFdpbjMyIMivsOa/oSDG98fUtcu0z7TZLCCx17DNwLpcblwKwM+53cD7wLi3ziCz18DMxry66iBXaW4zMiCxuMf2v6G0wiC09SC4ucC6ILCqwMwgwNa+7r7fILXIILTZtMIgsM3Au1xuXArAx7nMx9W0z7TZLiDAzLDNwLogd2NtZL7Iv6G8rSC/7r+1w7zBpiDIr7DmwMwgv7XH4sC7ILnMxKG0wrDFILDNwLpcblwKsKG0ycfPwfYgvsq02bTCILDNwLsgseK+78fPvcO/wC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUILTCILnoxKHGxMDPv6G8rSC4xbCzuq+89sDHIMO5ufjCsCCwzcC7IMH2v+y0wrWlILvnv+vH0bTZLFxuXAqx17ehvK0guMWws7qvvPYgMrChILjFsLO6r7z2IDHAzCC1yLTZLiDAzLDNwLoguO23ySC288DOv6G8rSC757/rx9/Au1xuXAqw5r/sIL7GuasgwM+1tSC+yCDH1bTPtNkuXG4iCgogIFdDTURfVElNRSwgICAiVElNRSAgtbW/8ri7XG4iCgogIFdDTURfVElUTEUsICAid2NtZMOiwMcgw6Igwaa48SC8s8GkLCC5rrn9IFRJVExFIFu5rsDav61dXG4iCgogIFdDTURfVFlQRSwKIlRZUEUgPMbEwM/AzLinPiAgPMbEwM8gwMy4pz64piDE3LzWIMDlxKG3ziC6ubvnICi4uL7gILnmx+LAzCDA58GkwMcgtci02bjpIFxuXAq+7rXws6opLiC+xrmrIL+ht6+woSC++MC4uOkgsdcgxsTAz8C7IMDQwLsgvPYgwNa0wiDF2L26xq7A1LTPtNkuXG4iCgogIFdDTURfVkVSSUZZLAoiVkVSSUZZtMIgIHZlcmlmeSDHw7ehsde4piC8s8Gkx8+w7Swgwfa/7LDtLCDF1726xq4gx8+0wrWlILvnv+u1yLTZLlxuXAq/w7nZuKUgx/zFwrTCOlxuXApcblwKVkVSSUZZIE9OCcfDt6Gx1yDExFxuXApWRVJJRlkgT0ZGx8O3obHXILL7XG5cClZFUklGWQkJIE9OIMDMs6ogT0ZGuKYgwPvA/cfPsNS6uL+pwdwgLlxuXApcblwKdmVyaWZ5IMfDt6Gx17TCIFdpbmW/obyttMIgvu62siDAz7W1IL7Ix9W0z7TZLlxuIgoKICBXQ01EX1ZFUiwKIlZFUiAgtOe9xcDMIL3Hx+C9w8WyIHdjbWQgufbBryC6uL+pwdxcbiIKCiAgV0NNRF9WT0wsICAgICJWT0wgtbW/8ri7XG4iCgogIFdDTURfRVhJVCwKIkVYSVS0wiDH9sDnILjtt8kgvLy8x8C7IMHftNy9w8WwsO0gv+6/tcO8waa3ziC1ub7GsKGwxbOqIHdjbWS4plxuXArIo8Pix9EgvL+3ziC1ub7GsKm0z7TZLlxuIgoKICAxMDAwLCAiV0NNRCCzu7rOILjtt8m16TpcblwKQVRUUklCXHRcdLW1vbogxsTAzyC80yC6uL+pwdawxbOqILnZstmx4lxuXApDQUxMXHRcdEm56MShIMbEwM8gvsi/obytILTZuKUgxsTAzyAgutK3r7/AseJcblwKQ0QgKENIRElSKVx0x/bBpiCx4rq7ILXwt7rF5LiuILnZstmx4lxuXApDTFNcdFx0xNy81iDIrbjpILH6sv3Hz7DUXG5cCkNPUFlcdFx0xsTAzyC6ubvnXG5cCkNUVFlcdFx0wNTD4rfCIMDlxKEgudmy2bHiXG5cCkRBVEVcdFx0vcO9usXbILOvwqUguri/qcHWsMWzqiC52bLZseJcblwKREVMIChFUkFTRSlcdMfPs6rAxyDGxMDPwMyzqiC/qbevIMbEwM/AuyDB9r/sseJcblwKRElSXHRcdLXwt7rF5LiuILO7v+sguri/qcHWseJcblwKRUNIT1x0XHS5rsDauKYgudm3ziDIrbjpIMPit8LAuLfOILq5u+dcblwKSEVMUFx0XHQguPHC98DHIMKpuLfH0SC1tb/yuLsgx9e48SC6uL+pwdxcblwKTUQgKE1LRElSKVx0x8/ApyC18Le6xeS4riC4uLXpseJcblwKTU9WRVx0XHTGxMDPIMDMs6ogv6m3ryDGxMDPLLHXuK6w7SC18Le6xeS4riCxuMG2IMDMtb9cblwKUEFUSFx0XHTFvbv2ILDmt84guri/qcHWsMWzqiC8s8Gkx8+x4lxuXApQUk9NUFRcdFx0uO23ySDHwbfSx8HGriC52bLZseJcblwKUkVOIChSRU5BTUUpXHTGxMDPIMDMuKcgudmy2bHiXG5cClJEIChSTURJUilcdMfPwKcgtfC3usXkuK4gwfa/7LHiXG5cClNFVFx0XHTIr7DmILqvvPYguri/qcHWsMWzqiC52bLZseJcblwKVElNRVx0XHS9w726xdsgs6/CpSC52bLZsMWzqiC6uL+pwdax4lxuXApUSVRMRVx0XHRXQ01EICC8vLzHwMcgw6Igwaa48SC8s8GkIFxuXApUWVBFXHRcdMXYvbrGriDGxMDPwMcgs7u/6yC6uL+pwdax4lxuXApWRVJcdFx0V0NNRCDH9sDnILn2wa8guri/qcHWseJcblwKVk9MXHRcdLXwvbrFqSDA5cShwMcgutK3/SC287qnILq4v6nB1rHiXG5cCkVYSVRcdFx0V0NNRCC03bHiXG5cblwKSEVMUCA8uO23yT7AuyDEobjpILHXILjtt8nAxyC787y8x9EgwaS6uLimILq4v6nB3FxuIgp9Cg==